Я создал поисковую систему на своем сайте, используя полнотекстовый поиск в Postegresql. я добавил поисковый запрос на моей странице PHP, в которой пользователи могут писать строки, подобные этим:
word1 +word2
word1+word2
word1 -word2
word1-word2
word1 word2
word1 word2
как преобразовать их в следующие строки?
word1&word2
word1&word2
word1&!word2
word1&!word2
word1|word2
word1|word2
Я попробовал несколько решений, но никто не работает со всеми случаями. Последнее, что я пробовал, следующее:
$user_query_string = trim($_GET['search']);
$final_query_string = str_replace(array('+', ' ', '-'), array('&','|', '&!'), $user_query_string);
Попробуй это:
$a=array('word1 +word2','word1+word2','word1 -word2',' word1-word2','word1 word2','word1 word2');
foreach ($a as &$v) {
$v=preg_replace('/ +/','|', // last: change blanks to |
preg_replace('/ *(?=[!&])/','', // delete blanks before ! or &
strtr(trim($v),array('-'=>'&!','+'=>'&')) // turn + and - into & and !&
));
}
print_r($a);
Это даст:
Array
(
[0] => word1&word2
[1] => word1&word2
[2] => word1&!word2
[3] => word1&!word2
[4] => word1|word2
[5] => word1|word2
)