Ответа я так и не нашел, поэтому решил делать, полагаясь на логику. В итоге написал так:
// Удалил эту строку отсюда и сделал удаление кавычек только для $temp для проверки в цикле (1).
//$term = preg_replace('/^(\'(.*)\'|"(.*)")$/', '$2$3', $term);
// Здесь проверка, что кавычки есть. Нужно для того, чтобы не не добавлялась * для поиска по неполному слову.
$isStrictSearch = preg_match('/^(\'(.*)\'|"(.*)")$/', $term);
$temp = preg_split(
'//u',
// Перенес сюда (1)
preg_replace('/^(\'(.*)\'|"(.*)")$/', '$2$3', $term),
0,
PREG_SPLIT_NO_EMPTY
);
foreach ($temp as $a) {
$cnt = 0;
if (preg_match('/[^\w\s]+/u', $a)) {
$cnt++;
if ($cnt >= 2) {
\IPS\Output::i()->json(array('type' => 'OK', 'html' => "", 'term' => $term));
}
} else {
$cnt = 0;
}
}
Так как я не знаю, для чего нужна проверка циклом, а выполнялась она в оригинале со строкой без кавычек, то и сейчас она так же выполняется, но оригинальный запрос не меняется.