сложить слово, когда только одно слово, а не составное слово

У меня есть следующая функция, я хочу, чтобы она полосала «альфа», когда только одно слово, а не часть составного слова типа «alphadog». Теперь вместо этого я просто вижу «собаку», и это не хорошо. Любая помощь?

function stripwords($string) { // build pattern once static $pattern = null; if ($pattern === null) { // pull words to remove from somewhere $words = array('alpha', 'beta', '-'); // escape special characters foreach ($words as &$word) { $word = preg_quote($word, '#'); } // combine to regex $pattern = '#\b(' . join('|', $words) . ')\b\s*#iS'; } $print = preg_replace($pattern, '', $string); list($firstpart)=explode('+', $print); return $firstpart; } 

: hi, у меня есть еще одна проблема … я отредактировал выше с новой версией функции: он разбивает слова, настраивает пробелы, а затем делает что-то еще, что мне нужно, но не удаляет тире (или минус). .. что не так? я пробовал что-то, но не помогло … спасибо

Эта:

 $pattern = '#' . join('|', $words) . '#iS'; 

Должно быть:

 $pattern = '#\b' . join('\b|\b', $words) . '\b#iS'; 

Используйте этот шаблон регулярного выражения

/\balpha\b/

\b означает «граница слова», это означает, что он будет соответствовать слову по отдельности (если слово окружено разделителями слов).

Надеюсь это поможет