我需要一些关于正则表达式的帮助:
我得到了一个 html 输出,我需要用 <sup></sup>
包装所有注册商标。
我无法插入 <sup>
标题中的标签和 alt
属性,显然我不需要包装已经上标的寄存器。
以下正则表达式匹配不属于 HTML 标记的文本:
(?<=^|>)[^><]+?(?=<|$)
我正在寻找的示例:
$original = `<div>asd® asdasd. asd<sup>®</sup>asd <img alt="qwe®qwe" /></div>`
过滤后的字符串应输出:
<div>asd<sup>®</sup> asdasd. asd<sup>®</sup>asd <img alt="qwe®qwe" /></div>
非常感谢您的宝贵时间!!!
最佳答案
好吧,如果您同意以下限制,这里有一个简单的方法:
那些已经处理过的regs紧跟在®之后有
echo preg_replace('#®(?!\s*</sup>|[^<]*>)#','<sup>®</sup>', $s);
背后的逻辑是:
- 我们只替换那些 ®后面没有 和...
- 后面没有 > simbol 且不打开 < 符号
关于php - 正则表达式取代 reg 商标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1368071/