php - 正则表达式取代 reg 商标

标签 php html regex preg-replace symbols

我需要一些关于正则表达式的帮助:

我得到了一个 html 输出,我需要用 <sup></sup> 包装所有注册商标。

我无法插入 <sup>标题中的标签和 alt属性,显然我不需要包装已经上标的寄存器。

以下正则表达式匹配不属于 HTML 标记的文本:

(?<=^|>)[^><]+?(?=<|$)

我正在寻找的示例:

$original = `<div>asd&reg; asdasd. asd<sup>&reg;</sup>asd <img alt="qwe&reg;qwe" /></div>`

过滤后的字符串应输出:

<div>asd<sup>&reg;</sup> asdasd. asd<sup>&reg;</sup>asd <img alt="qwe&reg;qwe" /></div>

非常感谢您的宝贵时间!!!

最佳答案

好吧,如果您同意以下限制,这里有一个简单的方法:

那些已经处理过的regs紧跟在®之后有

echo preg_replace('#&reg;(?!\s*</sup>|[^<]*>)#','<sup>&reg;</sup>', $s);

背后的逻辑是:

  1. 我们只替换那些 ®后面没有 和...
  2. 后面没有 > simbol 且不打开 < 符号

关于php - 正则表达式取代 reg 商标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1368071/

相关文章:

php - 如何在从mysql下载的文件的每行末尾添加文本?

php - 查找数据库中与最多关键字匹配的记录

html - 背景 :cover not scaling on mobile browsers

php - 如何在一行中显示签到表

php - 用户输入的带有 Javascript 的 HTML 显示给其他人但不是 HTML 转义的 XSS 示例

javascript - jQuery-UI:sortable() 占位符感觉很粘

javascript - 开发垂直 "UL"菜单

Javascript 解析带参数的嵌套字符串函数

javascript - IE 8 中的正则表达式 (Javascript) 问题

Python研究