0

$_GET[q]多くの異なる単語または用語で構成されるPHPGET変数を受け取り、配列に格納されている「キーワード」が含まれているかどうかを確認するPHPスクリプトを作成したいと思います。この例は、「サンフランシスコは今何時ですか」のようになります。例として、スクリプトで「時間」と「サンフランシスコ」を取り上げたいと思います。使って遊んだことがあります

if(stripos($_GET[q],'keyword1','keyword2'))

しかし、あまり運がありませんでした。

誰かが私がこれを行う方法を知っていますか?

私が説明しようとしていることを皆さんが理解してくれることを願っています。

4

3 に答える 3

1
foreach($arr as $value){
  if(stripos($_GET[q],$value){
    do stuff
  }
}
于 2012-05-31T18:41:06.543 に答える
1

キーワードの配列を作成し、一致するものが見つかるまでループすることができます。

$array = array('keyword1', 'keyword2');
$found = false;
foreach($array as $x){
    if(stripos($_GET['q'], $x) !== false){
        $found = true;
        break;
    }
}

if($found){
}

更新:すべてのキーワードに一致させたい場合は、代わりにこれを行うことができます:

$array = array('keyword1', 'keyword2');
$found = true;
foreach($array as $x){
    $found &= stripos($_GET['q'], $x) !== false;
}

if($found){
}

デモ:http ://codepad.org/LaEX6m67

更新2:私は頭がおかしくてワンライナーが好きなので、PHP5.3以降でこれを行うことができます。

$array = array('keyword1', 'keyword2');
$val = $_GET['q'];
$found = array_reduce($array, function($x, $v) use($val){
    return $x && stripos($val, $v) !== false;
}, true);

if($found){
}

デモ:http ://codepad.viper-7.com/Y48sHR

于 2012-05-31T18:42:51.243 に答える
0

in_array関数を使用します。

 // assuming $arr is your array of keywords
 if (in_array($_GET['q'], $arr))
     echo "found a match\n";

編集:あなたのコメントに基づいて、ここにあなたが使用できるコードがあります、それはループなしで動作します:

$arr = array('keyword1', 'keyword2', 'keyword3');
$brr = array_map(create_function('$m', 'return "/\b" . $m . "\b/";'), $arr);
if ($_GET['q'] !== preg_replace($brr, '', $_GET['q']))
     echo "found a match\n";
else
     echo "didn't find a match\n";
于 2012-05-31T18:36:27.510 に答える