ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現マッチング Chinese_PHP チュートリアル

PHP 正規表現マッチング Chinese_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:44:591247ブラウズ

PHP で中国語の文字を一致させるために通常のルールを使用したい場合は、文字列エンコードと中国語の文字の内部コードを理解する必要があります。この方法で、中国語の文字を素早く簡単に正確に一致させることができます。


PHP で文字列が中国語かどうかを判断するには、次の考え方に従います:

コードは次のとおりです コードをコピー
$str = "php プログラミング";
if (preg_match("/^[u4e00-u9fa5]+$/",$str)) {
print("この文字列はすべて中国語です");
} その他 {
print("この文字列はすべて中国語ではありません");
}
?>

ただし、php がそのような式をサポートしていないことがすぐにわかり、次のエラー メッセージが報告されます:
警告: preg_match() [function.preg-match]: コンパイルに失敗しました: PCRE は L、l、N、U、

をサポートしていません

または test.php の 3 行目のオフセット 3 にある u

最初はGoogleで何度も調べて、16進数のデータにPHPの正規表現を使いたかったのです

表現方法をブレークスルーして、phpでは16進数のデータを表すのにxが使われていることを知りました。それで、

次のコードに変換します:

コードは次のとおりです コードをコピー
$str = "phpプログラミング";
if (preg_match("/^[x4e00-x9fa5]+$/",$str)) {
print("この文字列はすべて中国語です");
} その他 {
print("この文字列はすべて中国語ではありません");
}

エラーは報告されていないようで、判定結果は正しいようですが、$str を「programming」という単語に置き換えても、結果は「文字列がすべて中国語ではありません」と表示されます。

を参照してください。

この判断はまだ十分正確ではありません。


中国語を正確に一致させる、つまり純粋な中国語の文字を一致させる場合、または中国語の文字と全角の句読点を一致させる場合は、エンコード環境の違いに応じて異なる方法を使用する必要があります。

以下は一般的に使用される 2 つのエンコーディング (gb2312、utf-8) です

ここに 2 つの例があります:

コードは次のとおりです コードをコピー

(1) ANSI プログラミング環境の場合:

$strtest = "yyg 漢字 yyg";

$pregstr = "/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])+/i" ;

if(preg_match($pregstr,$strtest,$matchArray)){

エコー $matchArray[0];

}

//出力: 漢字

(2) Utf-8 プログラミング環境の場合:

$strtest = "yyg 漢字 yyg";

$pregstr = "/[x{4e00}-x{9fa5}]+/u";

if(preg_match($pregstr,$strtest,$matchArray)){

エコー $matchArray[0];

}

//出力: 漢字

www.bkjia.com本当http://www.bkjia.com/PHPjc/633077.html技術記事通常のルールを使用して PHP で中国語の文字を照合したい場合は、中国語の文字を迅速かつ正確に照合できるように、文字列エンコーディングと中国語の文字の内部コードを理解する必要があります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。