PHP判斷字串-全英文字元-英漢混合-純漢字的簡單方法

wangccsy發表於2009-03-13

PHP 判斷字串-全英文字元-英漢混合-純漢字的簡單方法

看見很多朋友問如何判斷字串是否是純英文,或純漢字,或英漢混合。有個傳統的方案就是判斷字元的值是否小於128,但這種方法無法適用全漢字或英漢混合的情況,這裡我提出一種新的途徑來辨別。

複製程式碼

  1. $str = “456abc”;
  2. $x = mb_strlen($str,`gb2312`);
  3. $y = strlen($str); echo “——456abc—-
    “; echo “$x”.`
    `; echo “$y”.`
    `;
  4. $str = “456我是中國人abc
    “;
  5. $x = mb_strlen($str,`gb2312`);
  6. $y = strlen($str);
  7. echo “——456我是中國人abc—-
    “; echo “$x”.`
    `; echo “$y”.`
    `;
  8. $str = “我是中國人我愛祖國”;
  9. $x = mb_strlen($str,`gb2312`);
  10. $y = strlen($str); echo “——我是中國人我愛祖國—-
    “; echo “$x”.`
    `;
  11. echo “$y”.`
    `; $str = “我”;
  12. $x = mb_strlen($str,`gb2312`);
  13. $y = strlen($str); echo “——我—-
    “; echo “$x”.`
    `;
  14. echo “$y”.`
    `;
  15. $str = “我ab”;
  16. $x = mb_strlen($str,`gb2312`);
  17. $y = strlen($str); echo “——我ab—-
    “; echo “$x”.`
    `; echo “$y”.`
    `;
  18. ?>

利用php的mb_strlen和strlen函式就可以輕鬆得知字串的構成是全英文、英漢混合、還是純漢字。簡要說明如下(以上示例程式)

1、如果strlen返回的字元長度和mb_strlen以當前編碼計算的長度一致,可以判斷是純英文字串。
2、如果strlen返回的字元長度和mb_strlen以當前編碼計算的長度不一致,且strlen返回值同mb_strlen的返回值求餘後得0可以判斷為是全漢字的字串。
3、如果strlen返回的字元長度和mb_strlen以當前編碼計算的長度不一致,且strlen返回值同mb_strlen的返回值求餘後不為0,可以判斷為是英漢混合的字串。


相關文章