私はこの文章で特定のフレーズを強調するテキストがあります。強調表示は、太字のフレーズを<b>phrase</b>
にすることによって行われます。PHP文字列内のフレーズをハイライト表示
私は、強調表示する必要があるフレーズで配列を作成しました。以下を参照してください:
私のフレーズを強調する機能を作成しました。私は次のテキストがある場合
function highlight_phrases($string, $phrases, $tag = 'strong')
{
foreach($phrases as $phrase) {
$string = preg_replace('/' . $phrase . '/i', '<' . $tag . '>$0</' . $tag . '>', $string);
}
return $string;
}
は今:
This is some text about the <strong>iPhone 7</strong> and this i really a nice peace of engineering.
OK、すべての罰金:
This is some text about the iPhone 7 and this i really a nice peace of engineering.
をこれがに変わります!
今、私は別のテキストを持っている:
We are now talking about the iPhone 7 Plus, which is very big!
そして、ここでは間違っているもので、それはにこのターン:このHTMLが画面に印刷されている場合
We are now talking about the <strong><strong>iPhone 7</strong> Plus</strong>, which is very big!
、それはちょうどよく見える。しかし、strong
タグ内のstrong
タグのため、コード自体が間違っています。
これをどのように修正できますか?
注:$phrases
配列が非常に大きくなる場合がありますフレーズ
これはPHPクラスの唯一の目的ですか?もしそうなら、あなたはクライアント側の解決策を考え出すことができます.JavaScriptを使うだけです。 – treecon
あなたの 'for'ループを置き換える'/iphone 7 plus | iphone 7/i'のような正規表現を使う必要があります。 '$ ''。$ tag。 '>'、$ string('/'、$ phrase)'のように 'return preg_replace( '/'。 ); '(また、それらのフレーズを' preg_quote'し、最長のものが最初に来ることを確認することをお勧めします)。 –
@treecon、私はまた、読みやすさと 'iphone 7'と' iphone 7 plus'の違いをより明確にするため、javascriptの使用について考えました。 – Timo002