alt属性に含まれていない文字列を捕捉するために、eregi_replaceの正規表現が必要になるのではないかと思います。regexがPHPのaltテキストのパターンを見つけられないeregi_replace
が"ジョン・ドウが上...生まれた" が、例えば任意のタグにするときJohn Doeの検索/置換ません:
<img src="/jd.jpg" alt="John Doe at the beach" />
alt属性に含まれていない文字列を捕捉するために、eregi_replaceの正規表現が必要になるのではないかと思います。regexがPHPのaltテキストのパターンを見つけられないeregi_replace
が"ジョン・ドウが上...生まれた" が、例えば任意のタグにするときJohn Doeの検索/置換ません:
<img src="/jd.jpg" alt="John Doe at the beach" />
のようなパターンに一致していないながら、正規表現は
<b>
<<b>>
<<<b>>>
のようなパターンに一致することはできませんタグ内では、私はこれを行うでしょう:
$str = preg_replace('/John Doe(?![^<>]*+>)/i', $new_name, $str);
(?![^<>]*+>)
はnegatです私は先読みします。この点より先に山括弧がある場合、最初の括弧は閉じ括弧ではありません。属性値に山括弧を含めることができますが、私の経験ではほとんど行いません。
正規表現は基本的にHTMLと互換性がありません。 lookaroundsとpossessive quantifiersのようなpreg_
スイートの高度な機能を使用しても、属性値の山括弧がない場合は、のように単純化することにしばしば頼る必要があります。私ははるかに限定されたereg_
機能でこの仕事を試みることさえできません。
これはトリックを行ったようです!ありがとう。 – Ian
ゼロ幅先読みの使い分け。 –
あなた」にそれが見つけ、ジョン・ドウを交換する必要があります正規表現の限界に達しました。これにはカスタムパーサが必要です。 タグは入れ子にすることができ、私はそれがない場合は、「ジョン・ドウ」を交換したい場合
<b>>
<<b>
<<b>>>
など
しかし、要素内のテキストを検索している場合は、ネストされません。要素が<...>の範囲にある – Ian
「eregi_replace」にする必要がありますか? 'ereg [i] _'関数は、はるかに強力な' preg_'関数のために推奨されていません。 'preg_replace'では可能かもしれません。 –
確かに...私は仕事を終わらせることができるどんなツールでも行くでしょう。 :-) – Ian