问题描述
||
我使用这些正则表达式删除少于3个字符的单词:
$str = preg_replace(\"!\\\\b\\\\w{1,3}\\\\b!\",\"\",$str);
和
$rdu = \"/\\b[^\\b]{1,2}\\b/\";
$str = preg_replace($rdu,\" \",\" \" . $str . \" \");
但是以unicode文本返回我:
� �� �� �������� ��� �� � �� �� �������� ��� ��
....
有或没有正则表达式,有什么办法可以删除unicode文本中少于3个字符的单词?
THXA
解决方法
将u修饰符用于UTF-8支持:
/\\b\\w{1,2}\\b/u
, function RemoveLess($String,$Char=2)
{
$StringArray=explode (\" \",$String);
foreach ($StringArray as &$Word)
{
if (mb_strlen($Word,\"UTF-8\")>$Char)
{
$Str.=$Word.\" \";
}
}
return trim($Str);
}
$text=\"any text here - لا اله إلا الله محمد رسول الله\";
echo RemoveLess($text);