phpでand検索の処理をしたいのですが、どの様にした良いか分かりません。


例えば、「キーワード1 キーワード2」などの場合、まず全角スペースを半角スペースに変換して半角スペースに統一仕様と思います。

そして、半角スペースで区切って、「キーワード1 AND キーワード2」みたいな漢字で検索しようと思うのですが、スペースをいっぱい入れると「キーワード1AND AND AND キーワード2」みたいな感じになってしますのですが、普通はどうするのでしょうか?

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2006/10/16 17:37:37
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント50pt

http://php.benscom.com/manual/ja/function.preg-split.php

全角 -< 半角の変換は終わっているとして、preg_split で正規表現を使うと楽でしょう。

使い方は、

preg_split("/ +/","分割する文字列" );

です。

id:black_kenchan

有難うございます。勉強になりました。

2006/10/16 17:35:56

その他の回答4件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440ここでベストアンサー

ポイント50pt

http://php.benscom.com/manual/ja/function.preg-split.php

全角 -< 半角の変換は終わっているとして、preg_split で正規表現を使うと楽でしょう。

使い方は、

preg_split("/ +/","分割する文字列" );

です。

id:black_kenchan

有難うございます。勉強になりました。

2006/10/16 17:35:56
id:ito-yu No.2

回答回数323ベストアンサー獲得回数14

ポイント10pt

普通は、と言われると難しいですが私なら

$str = 'キーワード1 キーワード2'; //キーワード
$search_str = implode(' AND ', explode(' ', trim(mb_ereg_replace('[  ]{2,}', ' ', $str))));

強引に短くしました。

2文字以上の空白(全角・半角共)の連続を半角空白1つに置き換え、先頭と末尾の空白を取り除き、半角空白でexplodeし、' AND ' でimplodeすることで一気に検索用の文字列を作っています。

id:tadashi0805 No.3

回答回数287ベストアンサー獲得回数29

ポイント10pt

文字列が、キーワード1で始まって、スペース(複数可)、キーワード2で終わるというパターンであれば、以下の正規表現の置換で可能です。mbereg_replaceの1つ目の引数のパターンが、スペース1つ以上にマッチし、それを" AND "に置き換え、元の変数に格納されます。

$str = "キーワード1 キーワード2";

$rc = mbereg_replace("[ ]+", " AND ", $str);

但し、これだとキーワード1と2の間以外にもスペースが混ざっているとうまくいかなく、あらかじめ取り除いておく必要があります。

id:vector_xenon No.4

回答回数113ベストアンサー獲得回数4

ポイント30pt

正規表現でスペースを変換します


$keyword = preg_replace('/\s+/', 'and', $keyword);

id:hide987654321 No.5

回答回数1ベストアンサー獲得回数0

ポイント10pt

多分、質問者の方が意図されているのは?

$keyword = preg_replace('/\s+/', ' ', $keyword);

$keyword = preg_replace('/ /', ' AND ', $keyword);

ではないかと思われます。

id:black_kenchan

みなさん有難う御座いました。勉強になりました。

2006/10/16 17:36:33

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • 備忘録 - つぶやき 2009-04-02 00:15:50
    つぶやき 00:27 アイコン変更がままならず苦戦しているハイジさんをニヤニヤ眺めるだけの簡単なお仕事です 00:30 円谷重すぎるもうそれだけで笑えるwwwwww 00:31 f先生がどさくさに紛れて萌えp
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません