-1

私はいくつかの tekst エンリッチメントを含む文字列を持っています。文字列には zo there<b><em>いくつかの他の html タグがあります。もちろん、ユーザーは<script>または他のものを文字列に入れることもできますが、それはあなたが望むものではありません。<and>&lt;andに置き換えたいのですが、andは置き換え&gt;ません。<b><em>

4

3 に答える 3

1

ネガティブな先読みが必要なようです。

$escaped = preg_replace("(</?(?!(?:b|em)\b))","&lt;",$raw);

それ自体には意味がないので>、逃げる必要はないことに注意してください。&gt;

于 2013-02-28T20:03:43.070 に答える
1

これをテストする

  $notecomments=" <b> <em> <sf> <script>";
  $output=preg_replace_callback(array("#<(.*?)>#"),function($matches){
switch($matches[1]){
    case 'b':
    case 'em':
      return $matches[0];
    break;
    default:
      return "&lt;".$matches[1]."&gt;";

}
},' '.$notecomments.' ');
  print_r($output);

出力:

   <b> <em> &lt;sf&gt; &lt;script&gt; 
于 2013-02-28T20:08:49.217 に答える
0

おそらく、 strip_tagsはこれに適しています:

echo strip_tags($text, '<b><em>');
于 2013-02-28T20:10:34.350 に答える