<?php $content = <<<'EOD' <pre class="prettyprint linenums"> <?php if($hoge == 'hoge') { echo 'hoge!'; } <span class="nocode">text</span> </pre> ?> EOD; ?>
といったソースコードを Wordpress に表示させるとき、ソースコードの部分を htmlspecialchars
で実体参照変換して表示させる。
しかし、ソースコード内に注釈を入れる場合は <span class="nocode"> 注釈 </span>
を利用したい。
<span class="nocode"> 注釈 </span>
に対しては実体参照変換をせずに表示したい。
もしくは、<span class="nocode">
から始まる行は実体参照変換せずに表示したい。
もしくは、$content
を実体参照変換した後に <span class="nocode">
~</span>
の行を htmlspecialchars_decode
する。
現状
preg_replace_callback
で$content
内の文字列を抽出、置換
$content = preg_replace_callback( '/<pre(.*?)>(.+?)\<\/pre\>/s', function ($matchese){ return htmlspecialchars($matchese[2], ENT_QUOTES, 'UTF-8'); }, $content );
$content
をvar_dump
すると
string(131) " <?php if($hoge == 'hogeho') { echo 'hoge'; } <span class="nocode">nocode</span> ?>"
と、中身を実体参照変換することができました。
<span class="nocode"> 注釈 </span>
がソースコード内に入っていない場合はいいのですが、入っている場合のみ、<span class="nocode"> 注釈 </span>
の部分だけを変換したくありません。
この場合はどのようにしたらいいでしょうか?
ご回答お待ちしております。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。