0

我知道之前已经提出并回答过这类问题,但我无法隔离模式匹配中的错误。

由于一些非常棘手的遗留数据库输入,我试图删除两个 html 特殊字符之间的任何内容,然后继续处理剩余的内容。原始代码1<b>2在 1 之后变为粗体,但最终变为1&lt;b&gt;2

我想留下一个1&lt;&gt;21 2

我什至接近吗?

谢谢艺术

$str = '1&lt;b&gt;2';
$output = preg_replace('/&#?[a-z0-9]{2,8};(.*?)\/&#?[a-z0-9]{2,8};/is', '',$str); 
4

2 回答 2

2

看起来你应该删除中间的斜线

/&#?[a-z0-9]{2,8};[^&]+&#?[a-z0-9]{2,8};/is
于 2012-06-26T02:36:24.187 回答
0

您是否尝试过:

$str = strip_tags(html_entity_decode('1&lt;b&gt;2'));

或者如果你想用其他东西替换标签,比如空格:

$str = html_entity_decode('1&lt;b&gt;2');
$output = preg_replace('/<\/?[^\>]+>/ui', ' ',$str);
于 2012-06-26T02:26:12.160 回答