• ベストアンサー

あいまい検索

PHP+DBでLIKEでDBからあいまい検索するように、phpのみで配列からあいまい検索する事は不可能でしょうか? 自分で探した範囲では、不可能なのですが... 可能な方法知ってらっしゃる方がいれば、是非お願いします。

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

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

foreachでまわして、preg_matchしてみては? たとえばこんなかんじ? <?PHP $a=Array("abc","abcd","aaa","bbb","ccc"); foreach($a as $val){ if(preg_match("/^a/",$val)) $b[]=$val; } print_r($b); ?>

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • LIKE検索の場合うまくいきません

    WEBアプリとSQLServerでSELECTをするときに不正をされないように SELECT * FROM DB WHERE DB.A = 検索文字 を SELECT * FROM DB WHERE DB.A= @A のようにして、@Aを後で指定しますが、 SELECT * FROM DB WHERE LIKE '%検索文字' のようにLIKE検索の場合うまくいきません。 どのように記述したらいいのでしょうか? SELECT * FROM DB WHERE DB.A LIKE @A --> 駄目 SELECT * FROM DB WHERE DB.A LIKE '%@A' --> 駄目

  • キーワード検索について

    DB(mysql)内をキーワード検索する場合、 Like '%key%' などのようにLike検索をすると思うのですが、 一つ疑問なのが、「%」をキーワードとして検索したい場合は Like '%%%' となってしまい、すべてを表示してしまいます。 「%」をキーワードにした場合はどのような処理を行えば良いのでしょうか? あと、もう一つ分からないのが、mysql_real_escape_stringなどの関数でエスケープをしてDBに登録した場合、例えば、「&」は「&amp;」に変換されてDBに登録されると思うのですが、検索のキーワードを「amp」として検索すると、この「&amp;」までもがヒットしてしまいます。 これはどのようにして対処すれば良いでしょうか? DBに登録されるときに、エスケープされた文字が元に戻るようなことは期待できないでしょうか。 アドバイスをよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPorCGIでデータ検索

    こんにちは。 PHPで1万件弱のデータを3までのand条件で検索し検索結果を2つのフィールドを使ってソートするプログラムをひこうと思っています。 データの更新はCSVで行うのであくまでも検索のみです。 そこで問題なのは方法なのですが、 このような場合ですとやはりDBを使った方がいいのでしょうか?DBを使用するのだったらMySQLを考えていますが ホスティングサービスの関係でDBを使えないんです。 質問なのですが、 1.上記のような条件でデータをCSVで使って検索やソートができますか? 2.もしできるとしてDBと比べた時に開発のしやすさ、検索結果が表示されるまでのレスポンスはどれくらいの違いがありますか? 3.もしPHPが無理だとしたらCGIとCSVでは可能でしょうか?また可能でしたら2の比較はどうなりますか? 4.今回のような質問を比較しているサイト等ありますか?あったら教えていただけないでしょうか? 自分でも色々と探してみたのですが、どうにも見つからなくて困っています。 ご質問が色々とあって申し訳ございませんが、ご教授をよろしくお願いします。

    • ベストアンサー
    • PHP
  • 検索結果IDの使いまわしについて

    いつもお世話になります。 MySQL+PHPでシステムを構築しております。 PHPのmysql_queryもしくはmysql_db_queryで得た結果IDを使いまわす方法はありませんか? というのも、MySQLへ同じ検索をかける必要がある場合、都度検索するより、一度検索した結果IDを使えれば楽なのですが。。。 実際にやりたい事は、PHPのwhile関数で結果ID分の繰り返し処理を行い、その後、同じ繰り返し処理を行いたいのですが、再度、検索クエリ文をmysql_queryもしくはmysql_db_queryを行わずに利用できる方法があればと考えております。宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • LIKEで検索

    MySQL 4.0.20 + PHP で名前が入ったテーブルよりLIKEを使って検索すると全然関係のない名前まで引っ張ってきます。 SELECT * FROM `lady` WHERE name LIKE 'らむ' 上記で検索すると 「とも」って名前まで引っ張ってきます。 SELECT * FROM `lady` WHERE name LIKE 'らな' だと 「るる」って名前も引っ張ります。 どうも「ら行」の検索がうまく出来ないようです。 何か回避方法はあるのでしょうか? よろしく御願いします

    • ベストアンサー
    • MySQL
  • サイト内検索について

    質問お願い致します。 現在phpで作成されたサイトがあるのですが、これにサイト内検索を付けたいと思っております。そこで、DBなどを使わずに、phpのみでサイト内検索プログラムがかかれたサンプルなど知っている方はおられますでしょうか? ずっと探しているのですが、見つからず。。 急いでおります、どうぞよろしくお願い致します。

    • 締切済み
    • PHP
  • 検索機能

    プログラム初心者です 検索機能をつける方法を教えてください 質問1 like検索のLIKE “%value%”でもインデックスを使う方法はありますか?それともインデックスを使わなくても十分速いのでしょうか? 質問2 複数キーワードをスペースをはさんで検索してきた場合、どうやって処理すればいいのでしょうか? and検索のみです 例えばこんな文字の場合です $search = 'ああ いい うう'; $recordSet2 = mysqli_query($link,sprintf('SELECT * FROM table where name LIKE "%%%s%%"', $search )); while($row = mysqli_fetch_assoc($recordSet2)){ ?> <tr> <td><?php print $row['name']; ?></td> </tr> <?php } ?> よろしくお願いします

    • ベストアンサー
    • PHP
  • PDOでLIKE検索

    LIKE検索でつまづいでいます。 こまめにチェックしながら進めており、エラーが表示されるわけではないのですが、うまくキーが引き渡せていないのが原因だとは思うのですが、どう対策すればいいかというところでつまづいています。 文字コードの指定、直接パラメーターを使わない、プレースホルダの使い方、キーの渡し方等アドバイスをいただけないでしょうか。 ※全件表示だと動作します。また、$keyの中身はきちんと渡っているのは確認できましたが、select文の部分に反映されていないような状態。。。 【検索フォーム】 <form name="" method="POST" action="result.php"> <button type="submit" name="area" value="新宿">新宿</button> </form> 【検索結果】 define('DB_HOST', 'localhost'); define('DB_USER', 'ユーザー名'); define('DB_PASSWORD', 'DBパスワード'); define('DB_NAME', 'DB名'); try { $dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USER,DB_PASSWORD, array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'") ); } catch (PDOException $e) { echo $e->getMessage(); exit; } $key = "%".$_POST['area']."%"; $stmt = $dbh->prepare('SELECT * FROM salon WHERE area LIKE :area'); $stmt->bindParam(':area', $key, PDO::PARAM_STR); $stmt->execute(); ?> <body> <?php foreach ($stmt as $row) : ?> <?php echo htmlspecialchars($row['name'],ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($row['area'],ENT_QUOTES,'UTF-8'); ?> <?php endoforeach; ?> </body> アドバイスをいただければ幸いです。

    • ベストアンサー
    • PHP
  • 検索システムについて

    はじめまして。最近PHPの勉強を始めてプログラムを組んでいるのですが、検索システムを作る際、自分のDB内にあるファイルの単語を検索し表示するためにはどういった風に書けばいいのでしょうか。 何をここに最初に書いていればいいかわからないので聞かれてわかることは極力答えます。よければアドバイスをお願いします。

    • 締切済み
    • PHP
  • 文字の検索について

    「test」というデータベースの「shouhin」というフィールドに、次のようなレコードがあった場合、「PHP」というキーワードと「本」というキーワードの両方にマッチしたレコードを抽出したいのですが、自分で試した方法は、下記の2つの方法なのですが、この方法では、マッチさせるキーワードが3個の場合4個の場合を考えると式が複雑になってしまいます。 今やりたいことは、たとえば、googleでの検索のように、「PHP 本」と入力したら、PHPと本の両方のキーワードを含んだレコードを抽出したいのです。「PHP 本 楽しい」なら、この3つのキーワードを含んだレコードといった感じに。 検索したいキーワードを変数(たとえば、$keyword='PHP 本')にいれておいて、これを簡単に実現するsqlの記述の仕方はありますか? ご回答よろしくお願い致します。 ●「test」というデータベースの「shouhin」というフィールドに対して検索 ID |shouhin --+---------- 1 | PHPが書かれた本 2 | この本はPHPが書かれています 3 | 楽しいPHPの本 4 | HTMLの本 --+--------------------------- ●試してみた方法2種類 SELECT * FROM `test` WHERE shouhin REGEXP '(アジアン.*テーブル)|(テーブル.*アジアン)' SELECT * FROM `test` WHERE shouhin LIKE '%アジアン%' and shouhin_name LIKE '%テーブル%'

このQ&Aのポイント
  • プリントアウトがしたりしなかったりするトラブルに悩んでいませんか?ブラザー製品MFC-J1605DNの印刷できない問題に対する対処方法をご紹介します。
  • 紙が詰まる、連続して印刷できないなどのトラブルが発生する場合は、複合機の画面に従って対処することがありますが、それでも解決しない場合はどうすれば良いのでしょうか?
  • お使いの環境に適した設定や接続方法をチェックし、必要なソフトやアプリのインストールも行いましょう。また、電話回線の種類によっても影響がある可能性もあるので注意が必要です。
回答を見る