-1

我有一个带有一些 tekst 丰富性的字符串,zo 字符串中还有<b>一些<em>其他的 html 标记。当然,用户也可以将<script>或其他内容放入字符串中,但这不是您想要的。我想用 and 替换and ,<而不是and 。>&lt;&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 回答