php - 正则表达式删除完整的 HTML 实体
问题描述
我们需要从文本字符串中删除特殊字符。例如,我们可能会得到一个看起来像这样的字符串;是®
注册商标符号:
PEPSI® Bottle 20 oz<br><br>
我不擅长正则表达式,不知道如何编辑现有代码来生成它。
这是我们目前拥有的:
$ui = "PEPSI Bottle 20 oz<br><br>";
$ui = preg_replace('/[^A-Za-z0-9\.\' -]/', '', $ui);
这导致PEPSI174 Bottle 20 ozbrbr
.
我们想要的结果是PEPSI Bottle 20 oz<br><br>
。
如何编辑正则表达式以确保
- 它不会删除有效的 HTML 标签,如
<br>
, 和 - 如果它确实找到了一个特殊字符实体,它不仅会删除特殊字符(& 和#),还会删除数字和分号?
我们不想让它删除所有的数字,因为显然字符串可以包含数字;只有数字是我们需要删除的实体代码的一部分。
解决方案
您可以使用它,但现在我不能保证它涵盖所有可能的 HTML 实体:
$res = preg_replace('/&[A-Za-z0-9#]+;/', '', $ui);
这表示替换任何子字符串: - 以 - 开头,&
后跟任意数量的字母数字字符或#
以随机顺序 - 后跟;
.
推荐阅读
- reactjs - 标签
在此浏览器中无法识别 - html - Pandoc Markdown 到 HTML 块引用样式
- sql - SAC 层次结构不适用于输入参数
- php - 从 Docker 容器内部如何连接到 WSL2 发行版
- payment-gateway - Braintree 支持分期付款吗?
- python-3.x - 点击“加载更多新闻”按钮后 Python 抓取页面
- python - Python 请求遇到状态代码 406 和错误消息“请求不允许”
- mysql - 有多少电影只属于一种类型?
- javascript - 在 objection.js 中使用 json-schema 处理验证的正确方法是什么?
- javascript - 在标题键嵌套对象vue js上搜索和替换字符串