人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: black_kenchan
●カテゴリ:ウェブ制作
✍キーワード:PHP キーワード 仕様 普通 検索
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● b-wind
●50ポイント ベストアンサー

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

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

使い方は、

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

です。

◎質問者からの返答

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


2 ● ito-yu
●10ポイント

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

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

強引に短くしました。

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


3 ● tadashi0805
●10ポイント

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

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

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

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


4 ● vector
●30ポイント

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


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


5 ● hide987654321
●10ポイント

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

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

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ