我有以下功能,我希望它只在单个单词时删除“alpha” 而不是像“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;
}
编辑:嗨,我有另一个问题...我已经使用新版本的函数进行了编辑:它会删除单词,调整空格,然后执行我需要的其他内容,但它不会删除短划线(或减)...怎么了?我试了一下但没有用...谢谢
答案 0 :(得分:4)
使用此正则表达式
/\balpha\b/
\b
代表“单词边界”,表示它将单独匹配单词(如果单词被单词分隔符包围)。
希望这有帮助
答案 1 :(得分:0)
此:
$pattern = '#' . join('|', $words) . '#iS';
应该是这样的:
$pattern = '#\b' . join('\b|\b', $words) . '\b#iS';