Заменить точное возникновение Word в PHP?

Мне нужно многократно удалять определенные слова остановки из статей. В настоящее время я использую функцию str_replace для достижения этой цели. В качестве первого аргумента я использую переменную массива стоп-листа, чтобы удалить любое появление стоп-слов. Это прекрасно работает, за исключением того, что оно также удаляет любые совпадения, которые встречаются в середине слова (т. Е. Если стоп-слова являются «th», он удаляет «th» из «the», «then» и т. Д.).

Теперь, если бы я предоставил аргумент, используя простой текст, я мог бы добавить пробел по обе стороны слова, чтобы исправить ситуацию. Однако, поскольку я использую переменный массив, это не сработает. Я также попытался использовать оператор конкатенации, однако это, похоже, не является юридическим коннектором внутри функции.

Текущий код выглядит примерно так:

$i = str_replace(" " . $swarray . " ", $string ); 

Вместо этого вы должны использовать preg_replace со preg_replace . Например, ниже мы заменяем только слово, избегая them замены, а then т. Д.

 $string = preg_replace('/\bthe\b/', '', $string); 

preg_replace с array

 $find = array('/\bth\b/', '/\bthe\b/', '/\bthen\b/'); $replace = array('', '', ''); echo $i = preg_replace($find, $replace, $string); 

Или

 $find = array('/\bth\b/', '/\bthe\b/', '/\bthen\b/'); echo $i = preg_replace($find, "", $string); 

Документ соответствия Regex: http://www.php.net/manual/en/function.preg-replace.php#89364

 \b Match a word boundary 

Это должно работать:

 $i = $string; foreach($swarray as $word) { $i = str_replace(" " . $word . " ", "", $i ); }