0

「donttouch」属性がない限り、すべてのハイパーリンクに CSS スタイルを追加しようとしています。

例えば

  • これをスタイルします:<a href="http://whatever.com">style me</a>
  • これをスタイルしないでください:<a href="http://whatever.com" donttouch>don't style me</a>

これは、「donttouch」除外なしの私の preg_replace です。これは正常に機能します。

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

検索 (メモ帳++でも機能します)

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

置き換えます(メモ帳++ですべて置き換えます):

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

これは、正規表現なしで実行できます。代わりに、CSS 属性セレクターを使用してください。

たとえば、次のルールを使用します。

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

技術的には、「donttouch」属性を使用して要素をスタイリングしていますが、デフォルト値を使用できます。これは、正規表現を使用して HTML を解析しようとするよりも効率的ですが、これは通常は悪い考えです。

于 2013-02-10T09:26:47.107 に答える