2011-04-19 66 views
0

不知道是否有一个方便的preg_replace或相似的功能,这将改变我所有的&&,但不会改变&&(不会改变&这已经是以适当的格式)。预浸更换,严格的XHTML,PHP和符号错误

我有问题显示的页面有(用户提交)&,我想在页面显示之前更改它们(从一个从mysql获取的文本块)。

帮助将不胜感激。 干杯。

PS:我想用用&两边有空间str_replace函数的,但后来我停下来代替Bob & Jenny想着像Bob &Jenny错别字(因为用户提交的)。

+0

这听起来像你是双/部分编码它。你应该弄清楚为什么你将编码和未编码的数据放在一起并解决这个问题。 – 2011-04-19 20:03:26

+0

我没有编码任何@Drackir,只是在xhtml严格中,用户提交了一个类似'Bob&Jenny'的句子将阻止页面的显示。 – 2011-04-19 20:06:47

+0

你从哪里得到额外的'&'?用户是否提交了他们?如果你还没有编码它,为什么你的数据已经有'&'了呢? – 2011-04-19 20:09:02

回答

1

您可以使用?!断言为:

$html = preg_replace('/&(?!#?\w+;)/', "&", $html); 
       # or just (?!amp;) 

这也跳过现有&放大器;和其他& lt;或{实体。但这当然不是完美的。