1

リンクのアンカーにない文字列内の単語 (または式: 2 つの単語など) を見つけようとしています (文字列には html コードが含まれており、通常は utf-8 でエンコードされています)。その後、これらの単語をいくつかのリンクに置き換える予定です。

私は正規表現が苦手です。ウェブとスタックオーバーフローを検索し、役立つ正規表現パターンを 2 つ見つけましたが、それぞれに問題があります。誰かがこれら2つの例を組み合わせて良い例を得るのを手伝ってくれることを願っています.

最初のパターン:/('.$tag.')(?![^<]*<\/a>)/is

このパターンは単語を見つけますが、例として、文字列で「express」を見つけようとしている場合:

In computing, a regular expression provides a concise and flexible means...

..一致が見つかるとは思っていませんが、「expression」という単語で一致が見つかりました。

2 番目のパターン:\'(?!((<.*?)|(<a.*?)))(\b'.$tag.'\b)(?!(([^<>]*?)>)|([^>]*?</a>))\'is

このパターンには前の問題はありませんが、検索しようとしている単語または式の最後の文字が特別な utf-8 文字である場合、一致しません。

例の単語: apă

文字列の例:...care transformă umiditatea din aer în apă potabilă. Dacă iniţial a fost creată pentru situaţia ţărilor...

4

1 に答える 1

0

2番目の正規表現が機能すると仮定すると(私はそれをテストしておらず、この種のものに正規表現を使用する必要はないと思います)、u@hakreが言ったような修飾子を追加するだけです:

\'(?!((<.*?)|(<a.*?)))(\b'.$tag.'\b)(?!(([^<>]*?)>)|([^>]*?</a>))\'isu

個人的には、このタスクにはDOMDocumentを使用します。

于 2012-05-13T16:14:57.173 に答える