我正在尝试将CSS样式添加到所有超链接,除非它具有“donttouch”属性。
E.g。
<a href="http://whatever.com">style me</a>
<a href="http://whatever.com" donttouch>don't style me</a>
这是我的preg_replace没有“donttouch”排除,这工作正常。
preg_replace('/<a(.*?)href="([^"]*)"(.*?)>(.*?)<\/a>/','<a$1href="$2"$3><span style="color:%link_color%; text-decoration:underline;">$4</span></a>', $this->html)
我到处寻找,并感谢任何帮助。
答案 0 :(得分:0)
查找(也适用于Notepad ++)
(?s)(<a (?:(?!donttouch)[^>])+>)(.*?)</a>
替换为(在Notepad ++中全部替换):
\1<span style="whatever">\2</span></a>
答案 1 :(得分:0)
这可以在没有正则表达式的情况下完成。相反,请使用CSS属性选择器。
例如,使用以下规则:
a { font-weight: bold; color: green }
a[donttouch=''] { font-weight: normal; color: blue }
从技术上讲,您使用'donttouch'属性设置元素样式,但您可以使用默认值。这比尝试使用正则表达式解析HTML更有效,这通常是一个坏主意。