【发布时间】:2013-05-07 10:50:58
【问题描述】:
我正在寻找一个正则表达式 (php) 来查找/替换网页中的某些单词。但是,它不能替换所有html标签之间的单词,只能在:斜体i>、粗体b>和纯文本之间。
示例:
单词:“hello”(不区分大小写)
<a href="#">Hello</a> im a writer that i like to say hello everyday. <b>Hello</b> Spiderman.
替换:在anchor cant replace中,只能替换hello和< b>Hello< /b>。
我测试了一些正则表达式,但没有一个能正常工作:
1) 来自 SMART SEO LINKS(WP 插件)
$reg = '/(?!(?:[^<\[]+[>\]]|[^>\]]+<\/a>))\b($word)\b/Imsu';
效果不好,有时,删除内容并放上simbol ">" 我对这个正则表达式做了一些修改,去掉了“?!”或“?:”(我不知道是什么意思),但停止工作。
2) 我尝试过的其他人:
$reg = "/<([\w]+)[^>]*>\b('.$word.')\b<\/\1>/Imsu";
$reg = '/<+\s*\/\s\b('.$word.')\b[^>]\/\s>+/I';
不替换任何东西
$reg = '/<(\w+)[^>]*>\b('.$name.')\b<\/\1>/Imsu';
有时有效。
事实是我不是正则表达式专家,我进行了几天的测试,试图创建一个新的正则表达式,但没有达到我需要的结果。
事实上,替换将在 WP 插件中使用,这有时会影响模板或其他插件或 DOM 没有很好地创建
有人知道为什么不能正常工作吗?谢谢。
【问题讨论】:
-
Id' 为此使用 DOM,可能是 simplehtmldom.sourceforge.net。
标签: php regex wordpress html-parsing preg-replace