本文介绍了当一个词只是一个词时,去掉一个词,而不是复合词的一部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下功能,我希望它在只有一个单词时去除alpha"而不是像alphadog"这样的复合词的一部分.现在我只看到狗",这不好.有什么帮助吗?
I have the following function, I want it to strip "alpha" when is a single word onlyand not a part of a composite word like "alphadog". Now instead I just see "dog" and it's not good. Any help?
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;
}
我有另一个问题......我已经用新版本的函数编辑了上面的内容:它删除单词,调整空格,然后做我需要的其他事情,但它不会删除破折号(或减号)……怎么了?我尝试了一些但无济于事...谢谢
edit: i have another problem... i've edited above with the new version of the function: it strips words, adjust whitespaces and then does something else i need, but it doesn't remove dashes (or minus)... what's wrong? i tried something but no avail...thanks
推荐答案
这个:
$pattern = '#' . join('|', $words) . '#iS';
应该是这样的:
$pattern = '#\b' . join('\b|\b', $words) . '\b#iS';
这篇关于当一个词只是一个词时,去掉一个词,而不是复合词的一部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!