PHPでデータベースから取得した英単語表を、複数ワードで検索し、赤文字に変換して表示する

PHPでデータベースから英単語とその意味を表示するページを下記のように作成しています。
小学校のWord一覧
中学校のWord一覧
SimpleWikipediaの1500_Word一覧
LongmanDictionaryWord一覧
NGSL_Word一覧を見る
Oxford-3000_Word一覧
Oxford-5000_Word一覧
英単語集(14万語)
ANC30000英単語集

これらのページで、単語の一部(複数でも)を検索し、それに当てはまる部分を赤文字で表示しようとしました。
PHPでもプログラムの仕方がわからないので、AIに尋ねました。

「Perplexity」https://www.perplexity.ai/)、「ChatGPT」(https://chat.openai.com/)を利用しました。

そこで示されたのが、次のような記述でした。

foreach ($keywords as $keyword) {
$text = preg_replace("/$keyword/i", "$0", $text);
}
echo $text;

この中で、$keywordsは検索した複数のwordの配列。$textは検索する文章。
一度に検索して赤文字で示すことができるので大変良かった。
しかし、英単語(あるいは英語の文章)と意味の表で行っているときに、少し不具合を感じることがあった。
「an sp」というような短い文字で複数検索すると、赤い文字を設定するための記述「<span 」などが、2つ目のwordで引っかかってしまうのです。
AIをいろいろ試してみたのですが、うまくいきませんでした。
そこで思いついたのが、文字を赤く変えるのは最後だけにして、それまでは記号で置き換えるというものです。PHPにそれほど詳しくないので、自分の知識の範囲での対処法です。
そこで、上記を、回りくどく

foreach ($word_array as $keys) {
//タグのspanの文字がワードの文字に検索されないように一旦記号に置き換える
$word_s = preg_replace("/$keys/i", "★$0●", $word_s);//$word_sは検索用 文字列の$wordと同じもの
}
//記号を赤文字に設定するタグに置き換える
$kigou = ['★','●'];
$replaces = ["",""];
echo ""; echo str_replace($kigou, $replaces, $word_s); echo "";

と書き換えることによって、「span 」などの文字を置き換えるタグを拾わないようにしたものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください