2010-12-14 7 views
0

私はすべてのメンバーとその情報がJSONファイルに保存されているプロジェクトに取り組んでいます。私は検索フォームを作成中です。メンバーを繰り返し処理し、完全に一致するか類似しているかを確認する方法についてのヘルプが必要です。regexを使用してPOSTされたフォーム値を検索して結果を返す方法

$_SESSION['members'] = json_decode($jsonFile); 

が、私は(単に正確ではない)に類似しているの一致を確認するために正規表現を使用する方法が不確かだ:

メンバーがセッション変数に格納されています。たとえば、メンバーの名前が「Jonathan」の場合、ユーザーが「Jon」を検索してもその結果が返されます。正規表現は正しいアプローチですか?どんな助けでも大歓迎です - ありがとう!

-Manoj

答えて

0

:あなたは、のようなものを、個々のメンバーレコードをループしており、関連するフィールドを自分でgrepしている場合がありますLIKE検索、たとえば

SELECT * FROM users WHERE name LIKE 'Jon%' 

あなたは絶対にすべての部材を介して、あなたがループできたJSONを使用し、それらのすべてをチェックする

preg_match('/^'.$term.'.*/i', $element, $matches); 

のような正規表現を使用する必要がある場合。

+0

こんにちはポール、 JSONファイル - その内容は配列にダンプされます。 regexpをありがとう - それはSQL "LIKE"演算子に似た何かをするでしょうか? –

+0

私がそこに書いたものは、LIKEの例と同じように動作します。もちろん、最初から始める必要はありません。LIKE '%Jon%'は、フィールド内のどこでも 'jon'という単語に一致します。 equiv regexpは '/.*'.$term.'.*/i'のようになります。配列はどのように見え、どのフィールドを検索したいのですか? preg_grep()は、それらがすべての場合に理想的です... –

+0

配列はかなり単純です。各メンバーには名前、都市名、番号があり、検索フォームには名前、市区町村、番号の入力フィールドがあります。そして、はい、私はあなたの提案に基づいてそれらのすべてを検索しています。私はpreg_grep()と一緒に行くと思います。私は将来各メンバーのフィールドを追加する予定ですが、今はそれが私の持っているものです。 –

0

$jsonFile内容はある種の配列である場合、それは多次元配列では動作しませんが、あなたは、使用のpreg_grep()を見つけることができます。私はあなたが使用できるように、私はむしろJSONよりデータを格納するデータベースを使用していると思う

foreach ($_SESSION['members'] as $idx => $member) { 
    ... match relevant fields... 
} 
+0

ありがとう、Marc。 preg_grep()は、まったく同じではない類似の一致をチェックするために使用する必要があるものですか? –

+0

これは正規表現パターンの設定方法によって異なります。あなたが特にそのパターンを書かない限り、色/色の一致には役立ちません。あなたが本当に "類似した"タイプのマッチをしたいならば、あなたは 'soundex()'(http://php.net/soundex)のような他のものを調べなければなりません –

関連する問題