我有代码删除任何3个字母或更少的字。
$result = trim( preg_replace
("/[^a-z0-9']+([a-z0-9']{1,3}[^a-z0-9']+)*/i"," ",$_POST['query']));
但是有问题。首先,我不知道如何允许某些字符(波兰语是准确的,如ś,ć,ż等)。
其次,preg_replace
只有当它们位于字符串的中间时才删除短字,所以如果字符串是“我喜欢的东西”,或者更糟糕的是“我喜欢它”,“我”和“它会留在这里。这种情况正常工作的唯一情况是字符串就像“这就是某种东西”(“is”将从字符串中删除)。
答案 0 :(得分:1)
我认为这可能是解决方案:
$re = '/\b\w{1,3}\b/u';
$str = 'Ściana jest biała a obraz jest kolorowy it is something';
$result = trim(preg_replace($re,"",$str));
echo $result;
//just in case, per comments, if some unwanted white spaces are left...
$res=preg_replace("%\s{2,}%"," ",$result);
echo $res;
我添加了单词边界,所以小于(或等于)3个字符的所有单词都应该用空格替换,对于波兰字符,你需要u
修饰符。请测试并告诉我这是否适合您。