Я пытаюсь сделать расширенный поиск с тегами, которые могут связывать определенные ключевые слова с такими полями, как:
поиск : статус тестового сообщения: закрыто пользователь : john
Удивительно, что лучше всего разбирать строку в приятном массиве:
["search" => "test message", "status" => "closed", "user" => "john"]
В настоящий момент я делаю это так:
$parse = explode(':', $_REQUEST['q']); $parsed = []; foreach($parse AS $key => $value) { if($key == (count($parse) - 1)) break; $next = explode(' ', $parse[($key + 1)]); $last = array_pop($next); $next = implode(' ', $next); $parse[($key + 1)] = $last; $parsed[$parse[$key]] = !empty($next) ? $next : $last; }