2012-02-12 88 views
1

为什么preg_replace删除HTML实体无效?为什么此preg_replace不起作用?删除HTML实体

// Remove all HTML entities 
$text = preg_replace('/&[A-Za-z0-9]+?;/',' ', $text); 

我只是试图取代所有HTML实体,如(& ###;,<,和等)的空间,但我似乎失去了一些东西,因为它不是取代他们,我现在完全混淆了。


测试用例

代码:

// Remove all HTML entities 
$title="&#9829;&#9829;&#9829; I like cats &#9829;&#9829;&#9829;"; 
echo "BEFORE : ".$title."\n"; 
$title2 = preg_replace('/&[A-Za-z0-9]+?;/e',' ', $title); 
echo "AFTER : ".$title2."\n"; 

输出:

BEFORE : ♥♥♥ I like cats ♥♥♥ 
AFTER : ♥♥♥ I like cats ♥♥♥ 

PHP的信息:

PHP版本:Ubuntu的5.3.6-13 3.5

正则表达式库:捆绑库启用

+0

http://regexadvice.com/forums/thread/17340.aspx – hackartist 2012-02-12 19:24:59

+0

按预期工作。您的输入有些不同,或者您错误地应用了它。 – mario 2012-02-12 19:31:31

+0

我加了我如何测试它,它不适合我。 – 2012-02-12 19:42:37

回答

1

你错过#

它应该是这个正则表达式代替您的preg_replace调用:

/&#[a-z\d]+;/i 
+0

谢谢!我知道这是这样的。我也把一个?之后#匹配像< – 2012-02-12 19:49:46

+0

不客气。是的,请为'<''>'等加上'?'。 – anubhava 2012-02-12 19:53:31

0

尝试使用global modifier(E)

+1

我试过它没有工作。 – 2012-02-12 19:29:15

相关问题