0

我正在尝试将 CSS 样式添加到所有超链接,除非它具有“donttouch”属性。

例如

  • 风格这个:<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)

我已经到处找了,希望有任何帮助。

4

2 回答 2

0

这可以在没有正则表达式的情况下完成。相反,使用 CSS 属性选择器。

例如,使用以下规则:

a { font-weight: bold; color: green }
a[donttouch=''] { font-weight: normal; color: blue }

从技术上讲,您正在使用“donttouch”属性设置元素的样式,但您可以使用默认值。这将比尝试使用正则表达式来解析 HTML 更有效,这通常是一个坏主意。

于 2013-02-10T09:26:47.107 回答
0

查找(也适用于 Notepad++)

(?s)(<a (?:(?!donttouch)[^>])+>)(.*?)</a>

替换为(在 Notepad++ 中全部替换):

\1<span style="whatever">\2</span></a>
于 2013-02-10T09:11:55.093 回答