$text = preg_replace('/\b(?:no|this)\b ?/i', '', $text);
Edit:
Теперь он удаляет пробел, если он находит один после слова, так что вы не получите два пробела подряд.
$text = 'There are no user contributed notes for this page.';
$text = preg_replace('/\b(?:no|this)\b ?/i', '', $text);
echo $text;
Выходы: для страницы есть пользовательские заметки.
Обновление
Если вы хотите использовать массив, чтобы упростить управление отфильтрованными словами, вы можете сделать это:
function filterWords($string){
$bad_words = array('no', 'this');
return preg_replace('/\b(?:'.implode('|', $bad_words).')\b ?/i', '', $string);
}
echo filterWords('There are no user contributed notes for this page.');