为什么这个 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
正则表达式库:启用捆绑库
最佳答案
您缺少#
在你的 preg_replace 调用中应该是这个正则表达式:
/&#[a-z\d]+;/i
关于php - 为什么这个 preg_replace 不起作用?删除 HTML 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251878/