为什么这个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:已启用捆绑库
答案 0 :(得分:1)
你错过了#
应该是这个RegEx而不是你的preg_replace调用:
/&#[a-z\d]+;/i
答案 1 :(得分:0)
尝试使用global modifier(e)