php preg_match для граненой строки поиска - PullRequest
0 голосов
/ 04 декабря 2011

Я ищу php preg_match, чтобы разбить строку граненого поиска.

пример поискового ввода: chevy tahoe city: сиэтл цвет: дюна пустыни вместимость: 7

  • критерии поиска: chevy tahoe
  • Городской аспект: Сиэтл
  • цветной аспект: пустынная дюна
  • емкость аспекта: 7

критерий поиска всегда будет первым во входной строке ... но фасеты могут быть взаимозаменяемыми.

1 Ответ

0 голосов
/ 05 декабря 2011

Попробуй это.Должно работать.

$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
)
...