2
如何在for
循環中將中文與英文字符分開?php中文與英文字符分開
這是代碼:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
function filter_ch($char)
{
return $char;
}
function filter_en($char)
{
return $char;
}
$str='Hello 你怎麼樣? How are you?';
$english='';
$chinese='';
for ($i=0;$i<strlen($str);$i++)
{
$char = substr($str, $i, 1);
if(preg_match('/\p{Han}+/u', $char))
{//if chinese
$chinese.=filter_ch($char);
}
else
{//if english
$english.=filter_en($char);
}
}
echo 'chinese: '.$chinese.'<br>';
echo 'english: '.$english.'<br>';
?>
</body>
</html>
這就是結果:
chinese:
english: english: Hello 你怎麼樣? How are you?
我想要的結果:
chinese: 你怎麼樣?
english: Hello How are you?
把'的preg_match()'在一個循環是一個非常糟糕的主意:這是非常緩慢的。我建議使用'preg_replace()' – HamZa
@HamZa,'preg_replace'用於替換。我認爲這裏的問題是因爲漢字需要兩個字符空間。 – sheno
[說什麼?](https://eval.in/39753):) – HamZa