2011-06-14 48 views
0

我使用这些正则表达式来删除单词少于3个字符:PHP:在Unicode文本中删除单词少于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

回答

4

使用u modifier for UTF-8 support

/\b\w{1,2}\b/u 
+0

我用U,返回正确的文本,但单词少于3个字符仍然存在。 – Nulled 2011-06-14 19:38:59

+0

@NuLLeR:'U'不是'u'。 – Gumbo 2011-06-14 19:40:30

+0

我知道,我使用你。 – Nulled 2011-06-14 19:43:09

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); 
+0

嗨哈立德,谢谢你的回答。然而,只有代码的答案是不鼓励的。你认为你可以编辑你的答案来解释为什么这解决了OP的问题? – 2016-06-13 23:01:52