我使用这些正则表达式删除少于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
答案 0 :(得分:4)
使用u modifier for UTF-8 support:
/\b\w{1,2}\b/u
答案 1 :(得分:0)
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);