検索結果のハイライト処理がうまくできない

このQ&Aのポイント
  • 現在、PHPで簡単な検索エンジンを作成していますが、検索結果のハイライト処理がうまくできません。
  • 具体的な例として、キーワードが変数中にあり、検索キーワードと一致した部分を背景黄色で太文字にする処理を行いたいのですが、正常にハイライトされない問題があります。
  • 現在のコードでは、一部のキーワードと一致した場合にしかハイライトされず、大文字と小文字の区別もできていません。改善方法があれば教えていただきたいです。
回答を見る
  • ベストアンサー

検索結果のハイライト処理がうまくできない

現在、勉強がてらPHPで簡単な検索エンジンを作っています。 $keyword="aaa bbb ccccc"; というキーワードが変数中に有り、検索キーワードが $query="bbb"; とした場合、検索結果の画面で aaa <bbb> ccccc(<>内は背景黄色で太文字のハイライト処理部分。<>は非表示) としたいのですが、うまくいきません。 現在は、 $keyword=mb_eregi_reqlace($query,"<span style=\"background:yellow;\"><strong>$query</strong></span>",$keyword); としています。 これだと、正常にbbbの部分がハイライトされる反面、キーワードBBBで検索をかけたときに検索結果が aaa <BBB> ccccc となってしまいます。 BBBで検索をかけても aaa <bbb> ccccc という感じで検索結果を表示させたいのですが、何か良い方法が有りましたらご教授いただけると幸いです。 よろしくお願いします。 現在の具体的な例 $keyword="keyword planetarian keyword2...";→登録されてるキーワードの一部 $query="ARIA";→検索語句 出力 keyword planet<ARIA>n keyword2... 希望してる出力 keyword planet<aria>n keyword2... 雑文ですみません。 意味の分からない部分が有れば補足しますので、どうぞよろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

こんな風にしてみては? <? $keyword="aaa bbb ccccc"; $query="BBB"; $keyword=preg_replace("/".preg_quote($query,"/")."/i","<strong style=\"background-Color:yellow;\">$0</strong>",$keyword); print $keyword; ?>

gottyato
質問者

お礼

想定通りの動作を確認しました。 本当にありがとうございました!

関連するQ&A

  • 検索結果のハイライト表示

    はじめまして。sakotecといいます。ほぼASP初心者です。宜しくお願い致します。 ある社内イントラネットで、アクセスのデータベースをASPを使って、ユーザが指定した条件で検索し、結果を表示するというとてもオーソドックスなシステムを作ってます。 そこで、ユーザが指定したキーワードをSQL文のLIKEを用いて検索しているのですが、検索結果の見栄えをよくしたく、そのキーワードを検索結果内でハイライト表示をしたいと思ってます。処理速度も速く、簡単な方法はないでしょうか?VBSでなくてもいいです。 イメージ的にはGoogleのキャッシュのページ見たいな感時です。 どうかよろしくお願いします。

  • windows7 検索のハイライトについてです。

    IE7、Googleでの検索を使っています。 検索結果から、[キャッシュ]と書かれたリンクをクリックしキャッシュが表示されます。ページ上部に明示される部分で、キーワードに一致する用語はハイライト表示されると思うのですが、PCを新調したところこのハイライト表示がありません。 Googleオプションの強調表示も試しましたがこれとは違うものでした。 何か別の設定が必要なのでしょうか。

  • Vi で検索したキーワードを参照する方法

    Vi を使っていて、例えば aaa という文字列上で「*」と入力すると、aaa で検索してくれると思うのですが、その検索キーワードを、bbb に置換したい場合に、 「:%s/aaa/bbb/g」と入力しているのですが、 aaa を入力しないで済むと助かるなと思うのですが、直前に検索したキーワードを何か特別な変数なりを参照することで対応できたりしないものでしょうか?

  • キーワードをハイライトさせたいのですが。。。

    phpで検索キーワードのハイライト処理をしたいのですが //置換対象文字列 $content= "検索対象文字列hogehoge<a href=\"hogehoge\">リンク</a>します。hogehoge"; //キーワード $search = '/(hogehoge)/i'; //置換後の文字列 $replace = '<strong>${1}</strong>'; //置換する $content = preg_replace($search, $replace, $content); echo $content; これですと、HTMLタグ内の「hogehoge」まで置換されてしまいまして。。。 これを回避するための正規表現を教えていただければ幸いです。 どうぞよろしくお願いいたします。

    • 締切済み
    • PHP
  • エクセルのマクロ【複数検索&検索結果の合計】

    以下のように 【sheet1】にA列B列からなるデータにおいて A列の内容が同じものどうしのB列の値を合計し その結果の大きい順に並べて 【sheet2】に出力するマクロを 作りたいのですが、どうしたらよいかわかりません。 どなたかお分かりになる方いらっしゃいましたら 教えて頂きたくお願い致します。 【sheet1】   A列    B列 aaa 5 bbb 4 aaa 3 aaa 2 ccc 89 bbb 100 【sheet2】 A列 bbb 104 ccc 89 aaa 10

  • はてなブログの検索キーワードハイライトが邪魔

    Googleの検索結果からはてなブログにアクセスすると、 検索キーワードがハイライト表示されます。 これがあると文章が非常に読みづらくなるのですが、 これはブログの訪問者にはどうにもならない機能なのでしょうか。 一応URLの最後の数字列を削除してアクセスするとハイライトは消えますが、 目的の記事以外も含めたページが表示されてしまい、これも不便です。 はてなブログの仕組みからして分からないのですが、 URLの最後の数字列は、特定の1つの記事を指す「だけ」のものなのでしょうか。 最初はリファラとか見て検索キーワードを特定してるのかと思いましたが、 URL直打ちでもハイライトされるのでどうも違うっぽいですが・・・

  • 他のクエリを保持したまま、ページ番号だけを変えたい

    検索ボックスに入力されたクエリを基に検索する、search.phpを作成しました。 queに格納されているキーワードを検索して、50件ずつ表示します。 このとき search.php?que=[検索キーワード]&cat=[検索カテゴリ]&page=1 で検索結果の1ページ目、 search.php?que=[検索キーワード]&page=2 で検索結果の2ページ目が表示されます。 ページ下部には 前へ 次へ とあり、それぞれページひとつ前、ページひとつ次のURLがあるのですが、このURLはクエリによって動的に変化します。 search.php?que=aaa&cat=abc&page=4 なら前へ:search.php?que=aaa&cat=abc&page=3 、 次へ:search.php?que=aaa&cat=abc&page=5 search.php?que=bbb?page=4 なら前へ:search.php?que=bbb?page=3 、 次へ:search.php?que=bbb?page=5 このように、それ以外のクエリを保持したまま、ページ番号だけを書き換えるにはどのようにすればいいのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • GOOGLE検索結果について

    グーグルでキーワードを入れて検索すると検索結果の最初の方に 薄茶色で数個の検索結果が出てきます この部分にはどのような検索結果が表示されているのでしょうか? また、自分のホームページをこの部分に表示させるには どのようにしたらいいのでしょうか? よろしくお願いします

  • Googleで検索しているとき、URLで絞り込みってどうやるの?

    こんばんは。 検索をしていて、ふと思ったのですが、キーワード+ある特定のURLってどうやって検索するのでしょうか? Googleで AAA社の商品BBBを、AAA BBB で検索したら、50,000件もヒットしました。 そこで、絞り込みをしたいのですが、ヒットしたページ 50,000件のうち、 URLに AAA を含むものを絞り込みをしたいのですが、どうすればよいですか? わかる方教えてください、お願いします。 また、Google以外で、上のようなことができる検索サイトを知っていれば教えて下さい。 よろしくお願いします。

  • Access97の検索処理について教えてください

    Access97でプログラムを作っていますが、あるDBに対して検索した結果を、内容確認用の専用画面に返したいのですが、その返し方がよくわかりません。 自分で考えた方法は、 ①マクロで検索クエリーを呼び出す。 ②検索クエリーでパラメータを渡す。 ③パラメータによる検索結果を専用画面に返す。 で、③の部分が上手くいきません。 ④また、クエリーの終了でメニュー画面へ戻らない。 以上、どなたか教えてください。

専門家に質問してみよう