2011-02-10 10 views
2

私はすでにGoogleとStackoverflowで検索を行っていますが、私にとってはうまくいくソリューションは見つかりませんでした。php、アンカータグを壊さずに検索キーワードを強調表示

これは私がこれまで持っているものです:文字列がアンカータグが含まれている場合を除き、正常に動作します

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

。しかし、私はまだアンカータグの外側と内側のキーワードを強調表示したいと考えています。

例:

$keyword = 's'; 

出力:

I alradyやったGoogleStackoverflow earchが、私は私のためを働く任意の olutionを見つけることができませんでした。

誰かがこれを使用することなくこの解決策を見つけることができたら、私は感謝しますPHPシンプルなHTML DOMパーサー

答えて

1

文字列全体ではなく、文字列内の「テキスト」を扱いたいだけなので、DOMパーサーを使用する必要があるようです。だから、 "テキスト"とは何か、HTMLの属性は何かを判断する方法が必要です。

ロットは、HTMLを解析しようとするとregexが動作しない理由の例です。

+1

はい。 "この問題を解決するために開発された技術を使わずに、この問題を解決する方法を教えてください。" –

+0

@Colin ... yah、funny、dude。私はちょうど他人の図書館、特にそのような小さなもののための1000行のコードに頼ることはしたくない。 –

+0

@コリンファイン:ハハ。うまく言葉を語った。 –

2

これは、ほとんどの状況で動作するはずです:

$string = preg_replace('/(?![^<>]*>)'.preg_quote($keyword,"/").'/i', 
'<span class="highlight">$0</span>', $string); 
関連する問題