ホームページ  >  記事  >  バックエンド開発  >  PHP は、文字列が純粋な英語なのか、純粋な中国語なのか、それとも中国語と英語の混合なのかを判断します。

PHP は、文字列が純粋な英語なのか、純粋な中国語なのか、それとも中国語と英語の混合なのかを判断します。

WBOY
WBOYオリジナル
2016-06-13 13:02:061131ブラウズ

PHP は、文字列が純粋な英語、純粋な中国語、または中国語と英語の混合であるかどうかを判断します

正規表現判定と文字値が 128 未満かどうかを判定する分割文字判定に加えて、文字列が中国語 (または英語) であるかどうかを判定する PHP メソッド

?

さらに特殊な方法もあります。

PHP で mb_strlen 関数と strlen 関数を使用して を決定します
この方法は比較的単純です。上記の 2 つの関数を使用して、現在のエンコーディングでの文字の戻り値を測定し、戻り値を比較します。
等しい戻り値は、純粋な英語、純粋な数値、および英語と数値の混合です。 戻り値は等しくなく、strlen の戻り値は mb_strlen で割り切れ、純粋な漢字です
戻り値は等しくなく、strlen の戻り値は mb_strlen で割り切れません。英語と中国語、または中国語と中国語の混合配列です。

?

次の例を見てください:

?
<?php  
$strarray[1] = "hello";
$strarray[2] = "123456";
$strarray[3] = "123hello"; 
$strarray[4] = "你好";
$strarray[5] = "123你好";
$strarray[6] = "hello你好";
$strarray[7] = "123hello你好"; 

foreach ($strarray as $key->$value) 
{ 
    $x = mb_strlen($value,'gb2312'); 
    $y = strlen($value); 

    echo $strarray[$key].'  <span style="color: #ff0000;">'.$x.'</span> <span style="color:#ff0000;">'.$y.'</span>'; 
} 

?> 
実行後の結果は次のとおりです:

こんにちは5 5
123456 6 6
123こんにちは8 8
こんにちは2 4
123 こんにちは5 7
こんにちは7 9
123こんにちは、こんにちは10 12

?

出典: http://007blogchina.appspot.com/?p=130001

?

HP には、文字列が純粋な英語なのか、純粋な中国語なのか、それとも中国語と英語の混合なのかを判断する直接的な関数はありません。この関数は自分で作成するしかありません。この機能を実現するには、文字セットの中国語の文字エンコーディングの占有率を理解する必要があります。現在、中国で最も一般的に使用されている文字セットは UTF8 と GBK です。

UTF8 の各漢字は 3 つの長さに等しい;

GBK の各漢字は 2 つの長さに等しい

中国語と英語の上記の違いを利用して、mb_strlen 関数と strlen 関数を使用して 2 組の長さの数値をそれぞれ計算し、規則に従って演算を実行して文字列の型を決定できます。

?

UTF-8 インスタンス

?
<?php
/**
 * PHP判断字符串纯汉字 OR 纯英文 OR 汉英混合
 */
echo '<meta charset="utf-8" />';
function utf8_str($str){
    $mb = mb_strlen($str,'utf-8');
    $st = strlen($str);
    if($st==$mb)
        return '纯英文';
    if($st%$mb==0 && $st%3==0)
        return '纯汉字';
    return '汉英混合';
}
 
$str = '博客';
echo '字符串:<span style="color:red">'.$str.'</span>,是<span style="color:red">'.utf8_str($str).'</span>';
?>

GBK方式

?
function gbk_str($str){
    $mb = mb_strlen($str,'gbk');
    $st = strlen($str);
    if($st==$mb)
        return '纯英文';
    if($st%$mb==0 && $st%2==0)
        return '纯汉字';
    return '汉英混合';
}
出典: http://www.qttc.net/201207142.html

?

?

?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。