2

私はいくつかの HTML コンテンツを持っています:

<p>
Nunc nulla tincidunt metus sed eros auctor sagittis. Sed malesuada, mi et ornare 
molestie, urna dui 
<a href="http://google.com/" title="condimentum nulla">condimentum nulla, ut luctus</a> nisl ipsum ut dui. 
Praesent aliquam velit quis neque congue consectetur <b>nulla</b>. 
Curabitur turpis risus, malesuada nec volutpat sit amet, auctor porta velit.
</p>

そして、すべての「nulla」単語をリンクに置き換えたいのですが、「nulla」が別のリンク URL または他の HTML パラメータ (タイトル、alt) の一部ではない場合に限ります。上記の例では、スクリプトは最初と最後の "nulla" 単語のみを置き換え、他の単語はそのまま残します。私はこの正規表現で立ち往生していますが、私が望むようには機能しません:

/[^<a]+[^>]*nulla[^<\/a>]/
4

1 に答える 1

3

正常に機能する最終的なソリューション:

$str = preg_replace('~\bnulla\b(?!(?>[^<]*(?:<(?!/?a\b)[^<]*)*)</a>)~iu', '<a href="novo-mega-link.php">$0</a>', $str);
于 2011-12-14T23:05:33.547 に答える