2

すでに Google と Stackoverflow で検索しましたが、自分に合った解決策が見つかりませんでした。

これは私がこれまでに持っているものです:

$string = preg_replace('/'.$keyword.'/i', 
'<span class="highlight">$0</span>', $string);

文字列にアンカータグが含まれている場合を除いて、これは正常に機能します。しかし、アンカー タグの外側と内側でキーワードを強調表示できるようにしたいと考えています。

例:

$keyword = 's';

出力:

GoogleS tackoverflowで既に検索を行いましたが、自分に合った解決策見つかりませでした。

PHP Simple HTML DOM Parserを使用せずに、誰かがこれに対する解決策を見つけることができれば幸いです。

4

2 に答える 2

2

これはほとんどの状況で機能するはずです:

$string = preg_replace('/(?![^<>]*>)'.preg_quote($keyword,"/").'/i', 
'<span class="highlight">$0</span>', $string);
于 2011-02-11T00:32:29.443 に答える
1

文字列全体ではなく、文字列内の「テキスト」のみを処理したいので、DOM パーサーを使用する必要があるように思えます。したがって、「テキスト」とは何か、HTML 属性とは何かを判別する方法が必要です。

HTML を解析しようとして正規表現が機能しない理由の例はたくさんあります。

于 2011-02-10T11:11:04.063 に答える