Снять конкретные слова из строки

Я хочу вырезать целые слова из строки, где бы они ни находились внутри строки.

Я создал массив запрещенных слов:

$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 двойные пробелы и удалить их