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

标签 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="&#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版本:5.3.6-13 ubuntu 3.5

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

最佳答案

您缺少#

在你的 preg_replace 调用中应该是这个正则表达式:

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

关于php - 为什么这个 preg_replace 不起作用?删除 HTML 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251878/

相关文章:

php - 如何在一个 preg_replace() 中将所有非单词字符和多个空格更改为 ' ' 然后将所有空格更改为 '-'

php - 连接具有不同列值的行

javascript - php HTTP_USER_AGENT 变量帮助检测浏览器

php - 如何设置 PHP 和 MySQL?

javascript - 如何为文本区域创建正则表达式?

c# - 正则表达式获取第 n 个值,用斜杠分隔

php - 缺少 php8.1-curl 包

php - 从字符串中查找价格的正则表达式

php - 仅使用单连字符定界符将字符串转换为 slug

php - 如何在 php 中的字符串中去除/删除所有空格**除了单词之间**?