Я хочу вырезать целые слова из строки, где бы они ни находились внутри строки.
Я создал массив запрещенных слов:
$wordlist = array("or", "and", "where", ...)
Теперь я стираю слова:
foreach($wordlist as $word) $string = str_replace($word, "", $string);
Проблема в том, что в приведенном выше коде также используются слова, содержащие запрещенные слова, такие как «песок» или «больше».
Для этого вы можете использовать preg_replace и границы слов:
$wordlist = array("or", "and", "where"); foreach ($wordlist as &$word) { $word = '/\b' . preg_quote($word, '/') . '\b/'; } $string = preg_replace($wordlist, '', $string);
EDIT : Пример .
Str_replace также поддерживает ввод массива. Это означает, что вы можете использовать его следующим образом:
str_replace(array("word1", "word2"), "", $string);
Это означает, что все слова, существующие в массиве, будут заменены пустой строкой. Если вам нужны специальные замены, вы также можете создать массив замен.
Чтобы удалить правильные слова в настройках, я бы посоветовал добавлять пробелы вокруг «или» и «где». Поскольку вы только удаляете реальные слова, а не части слов.
Надеюсь, это поможет.
ПЫТАТЬСЯ:
$string = preg_replace("\b$word\b", "", $string);
$areaname = str_replace(array("to", "the","a","an","in","by","but","are","is","had","have","has"),'',$areaname);
я использовал его для этого и отлично работал
но вместо этих слов будут добавлены пробелы, поэтому вам нужно снова использовать замену на chk двойные пробелы и удалить их