1

非常にうまく機能する単語境界を使用した正規表現があります...

~\b('.$value.')\b~i

...HTML タグ内のテキスト (つまりtitle="This is blue!") と一致するという事実を考慮して保存します。正規表現が一致するものすべてに対してテキスト置換を行ってから、それらのタイトルタグを使用してツールヒントを表示しているため、これは問題です。ご想像のとおり、タイトル内のテキストを置き換えて、ツールチップの HTML を壊しています。たとえば、次のようにする必要があります。

<span class="blue" title="This is blue!">Aqua</span>

...になってしまう...

<span class="blue" title="This is <span class=" blue"="">Royal Blue</span>"&gt;Aqua</span>

strip_tags を使用しても問題は解決しませんでした。私が必要としているのは、単に末尾が一致しないより良い正規表現だと思いますblue">(この場合、「青」は、比較している配列内の他の色のプレースホルダーです)。

誰でも必要なものを正規表現に追加できますか? または、より良い解決策がありますか?

4

2 に答える 2

3

Davey、Dom ソリューションとは別に、これまでに述べたものよりも優れた正規表現ソリューションがあるため、この質問を復活させます。これは、1 つのステップを必要とする単純なソリューションです。

一般的な解決策は

<[^>]*>(*SKIP)(*F)|blue

ここにデモがあります

<>タグ内のコンテンツは単純にスキップされます。blue などのタグ間のコンテンツが一致しており、ニーズに合っているようです。

表現の「青」はお好みのものに置き換えてください。

参照

  1. 状況 s1、s2、s3 以外でパターンを一致させる方法
  2. パターンを一致させる方法...
于 2014-05-12T02:09:09.027 に答える
1

多くの場合、正規表現の置換は解決策のように見えますが、多くの悪い副作用があり、実際には目的を達成できない可能性があります。代わりに DOMDocument モデルを調べてください (一部のコメンターが示唆しているように)。

ただし、正規表現の使用を主張する場合は、SO に関する良い投稿をご覧ください。2 つのパスを使用して目的を達成します。

于 2013-10-28T20:57:07.463 に答える