我有一个包含4个字符的字符串بشكه
当我做mb_strlen时,结果是5,这意味着那里有一个隐藏的字符
我已经通过其角色循环找出最新情况
$string = 'بشكه';
$string = trim($string);
$string = preg_replace("/\s| /",'',$string);
echo ' total length : '.mb_strlen( $string , "UTF-8" ) ;
echo '<br />';
for( $i = 0; $i < mb_strlen( $string , "UTF-8" ); $i++ ) {
$char_b = mb_substr( $string , $i, 1 , "UTF-8");
echo $i . ' -> '.$char_b ;
var_dump($char_b );
echo '<br />';
}
这是输出
total length : 5
0 -> ب
string 'ب' (length=2)
1 -> ش
string 'ش' (length=2)
2 -> ك
string 'ك' (length=2)
3 -> ه
string 'ه' (length=2)
4 ->
string '' (length=3)
我使用了修饰或preg_replace(“/ \ s | /”,'',$ string)之类的常用功能,它不起作用
无论如何都要找到更多关于这些隐藏字符的内容,比如它们到底是什么以及如何删除它们?
答案 0 :(得分:1)
如果您不知道需要删除什么,只需将其反转并删除除了您想要保留的内容之外的所有内容,例如。
$string = preg_replace("/[^\p{L}[:space:]]/u",'',$string);
答案 1 :(得分:0)
您可以使用此正则表达式捕获utf8单词:
$string = 'بشكه';
$string = preg_match('/\p{L}+/u', $string, $matches);
var_dump($matches[0]);