Я думаю, что preg_replace должен соответствовать вашим потребностям, а также. Передайте массив $ words как шаблон и пространство в качестве замены. Затем сопоставьте результат с исходной строкой. Например,
$newStr = preg_replace($words, '', $sentence);
if($newStr !== $sentence)
return false;
return true;
Сообщите, если это поможет.
Редактировать: Как указано по-прежнему, слова в массиве $ words должны быть действительными регулярными выражениями. Таким образом, этот метод будет работать, только если слова будут заменены на шаблоны типа «один» на «/ один /».
Edit-2: Если вы хотите по какой-то причине сохранить слова массива, а затем использовать
$wordArr = preg_replace("/(.*)/", '/\1', $words);
конвертировать все слова действительных регулярных выражений. Я думаю, что даже с этими накладными расходами он должен быть быстрее strstr в длинном списке.
Подход 'preg_split' имеет то преимущество, что даже если у вас есть вкладки или несколько пробелов подряд. –