2011-12-04 7 views
-3

ファセット検索文字列を解説するPHP preg_matchを探しています。ファセット検索文字列のPHP preg_match

例えば、検索入力: シボレータホ市:シアトル色:砂漠砂丘容量:7つの

  • 検索基準:シボレータホ
  • 街のファセット:シアトル
  • 色ファセット:砂漠砂丘
  • capacity facet:7

検索条件は常に入力文字列内で最初になりますが、thファセットは交換可能である可能性がある。

+3

あなたは何を試してみましたか?あなたはどんな出力を期待していましたか?どのようなアウトプットを得ましたか? – abcde123483

+0

形式を少し変更することによって入力をより「解析可能」にしようとするとよいでしょう。 – Jon

答えて

0

これを試してください。それは動作するはずです。

$criteria = ''; 
$facets = array(); 
foreach (explode(' ' , $input) as $word) { 

    // This word is a facet 
    if (strpos($word, ':')) { 
     list($facet_name, $facet_criteria) = explode(':', $word, 1); 
     $facets[$facet_name] = $facet_criteria; 

    // This word is a search criteria 
    } else { 
     $criteria .= $word . ' '; 
    } 

} 

入力($input値):

chevy tahoe city:seattle color:desert dune capacity:7 

出力:

$criteria: chevy tahoe dune 

$facets: Array (
    [city] => seattle 
    [color] => desert 
    [capacity] => 7 
) 
+0

これは、可能な解決策を見る別の方法について説明しています。私はあなたの答えを微調整する必要があります複数の単語ファセットを可能にする...しかしそれにもかかわらず、あなたの答えは間違いなく助けている。ありがとう – tomwag