好吧,我在regexp中并不聪明,这就是我想做的事情
基本上,我有一个已经编码实体的字符串,但我需要再次编码所有实体,除了&
实体,所以如果我们有一个字符串
The Sun & Mars are planets
它会保持不变,因为我们不需要再次在&
中对&
进行编码
但如果我们有
The Sun — big hot planet
这应该成为
The Sun — big hot planet
我知道这很愚蠢,但这就是一个解析器想要的东西..
答案 0 :(得分:13)
只做两次换人:
&
替换为&
&
替换为&
答案 1 :(得分:8)
你可以使用负向前瞻来匹配“&”没有跟“amp;”。
$str = preg_replace( "/&(?!amp;)/", "&", $str );
答案 2 :(得分:0)
嗯,我认为解决这个问题的最佳方法是使用php函数htmlspecialchars,这里是manual page。基本上你需要禁用doble_encode(在它上面添加一个假的),这样就不会再次解析现有的html实体了。