为什么这个preg_replace不起作用?删除HTML实体

时间:2012-02-12 19:22:28

标签: php regex preg-replace

为什么这个preg_replace删除HTML实体不起作用?

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

我只是试图用空格替换所有HTML实体,如(& ###;,<等等),但我似乎错过了一些东西,因为它没有取代它们而且我完全没有现在很困惑。


测试用例

代码:

// Remove all HTML entities
$title="♥♥♥ I like cats ♥♥♥";
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版本:5.3.6-13 ubuntu 3.5

Regex Library:已启用捆绑库

2 个答案:

答案 0 :(得分:1)

你错过了#

应该是这个RegEx而不是你的preg_replace调用:

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

答案 1 :(得分:0)

尝试使用global modifier(e)