preタグ内のコードのタグをそのまま表示させる方法
date:2018/8/6
例えばホームページを作成する際にプログラムコードをそのまま表示させたい場合、preタグ内であってもタグは表示できません。あくまでpreタグ内は改行・空欄がそのまま表示されるだけです。
なので、preタグ内をプログラムで表示させたい場合、HTMLの特殊文字を変換しないといけません。
いちいち面倒なので指定範囲内を一斉に置換する処理をPHPで表現したいと思います。
例えば以下のようにフォームを記載した場合にそのままWEBページ上にコード表示したい場合です。
<pre><code class=prettyprint>
//コードを表示
</code></pre>
サンプルプログラムコード
preタグにもクラスやIDを指定することがありますので明示的にoriginalタグを使って、そこに含まれている文字はWEBページにそのまま表示させることで進めたいと思います。では実際にどのようにするのでしょうか?
まず考え方の手順を紹介します。
2:そのままWEBページに表示ということは、<を& lt;に変換、>を& gt;に変換します。
3:改行コードはbrタグに変換します
4:HTMLエンティティの変換には正規表現を使います。ただし改行コードが含まれる場合は、改行コード対応の正規表現にする必要があります。
//変数$contentsには対象の変換文字列が入ります
//originalのタグは大文字の<>を意図的に使っていますので小文字でご利用ください
$pattern = '/<original>(.*[¥s¥S]*)</original>/i';
preg_match_all($pattern, $contents, $matches);
$matches = $matches[1];
foreach ($matches as $value) {
$before = "<original>".$value."</original>"
$after = str_replace("<","<",$value);
$after = str_replace(">",">",$after);
$contents = str_replace($before,$after,$contents);
}
//改行コードをbrタグに変換
$contents = str_replace(array("¥r¥n","¥n","¥r"), '<br>', $contents);