ホームページ  >  記事  >  バックエンド開発  >  PHP で正規表現を使用して中国語の文字と一致させる方法

PHP で正規表現を使用して中国語の文字と一致させる方法

王林
王林オリジナル
2023-06-22 09:16:393582ブラウズ

PHP では、正規表現は一般的に使用される文字列一致ツールであり、文字列が特定の形式に準拠しているかどうかを判断し、入力値の妥当性を検証するために使用できます。中国語の文字を処理する場合、中国語の文字と英語の文字はエンコード方法が異なるため、正規表現の一致ルールをそれに応じて調整する必要があります。この記事では、PHP で正規表現を使用して中国語の文字を照合する方法を紹介します。

1. 中国語の文字エンコーディングを理解する

PHP で一般的に使用される文字エンコーディングは、UTF-8 と GBK です。 UTF-8 は「可変長エンコーディング」です。つまり、異なる文字は異なる長さを持ち、異なる文字を表すために 1 ~ 4 バイトが使用されます。 GBK は、各文字が 2 バイトで表される「固定長エンコーディング」です。

UTF-8 エンコード規則は比較的複雑であるため、中国語の文字を照合する場合、GBK エンコードを使用して照合できます。 PHP では、mb_convert_encoding() 関数を使用して、文字列を UTF-8 から GBK エンコーディングに変換できます (例:

$str = "中文";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");

2)。漢字

  1. 単一の漢字と一致するには、正規表現 [x{4e00}-x{9fa5}] を使用できます。 x が 16 進文字を表す場合、{4e00} と {9fa5} は中国語の文字セットの最初と最後の文字、つまりそれぞれ「一」と「饥」を表します。
コード例:

$str = "中文";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match("/[x{4e00}-x{9fa5}]/u", $str_gbk, $match);
echo $match[0];

出力結果は次のとおりです:

複数の中国語文字に一致

  1. 複数の中国語文字に一致するには、正規表現に量指定子を追加できます。たとえば、* は任意の数の中国語の文字に一致することを意味し、少なくとも 1 つの中国語の文字に一致することを意味し、{n,m} は n ~ m 個の中国語の文字に一致することを意味します。
コード例:

$str = "中文编程真有意思";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match("/[x{4e00}-x{9fa5}]{2,}/u", $str_gbk, $match);
echo $match[0];

出力結果は次のとおりです:

中文编程真有意思

中国語の文字とその他の文字を一致させる

  1. 文字列 中国語の文字と他の文字を同時に照合するには、[x{4e00}-x{9fa5}] および [w] (任意の文字または数字と照合) を使用して文字列を照合します。例:
コード例:

$str = "中文AI编程真有意思123";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match("/[x{4e00}-x{9fa5}w]+/u", $str_gbk, $match);
echo $match[0];

出力結果:

中文AI编程真有意思123

3. 一般的に使用される正規表現関数

preg_match()

  1. preg_match() この関数は、文字列に対して正規表現の一致を実行するために使用され、一致結果または FALSE を返します。
構文: preg_match(string $pattern, string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0]]])

サンプルコード:

$str = "中文编程真有意思";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match("/[x{4e00}-x{9fa5}]+/u", $str_gbk, $match);
echo $match[0];

出力結果は次のとおりです:

中文编程真有意思

preg_match_all()

  1. preg_match_all() 関数は、文字列内の一致するすべての正規表現を検索するために使用されます。 results は、一致するすべての結果で構成される配列を返します。
構文: preg_match_all(string $pattern, string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0]]])

サンプル コード:

$str = "PHP是一门非常有用的编程语言,可以用来开发各种Web应用";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match_all("/[x{4e00}-x{9fa5}]+/u", $str_gbk, $match);
print_r($match[0]);

出力結果は次のとおりです。

Array
(
    [0] => PHP是一门非常有用的编程语言
    [1] => 可以用来开发各种Web应用
)

preg_replace()

  1. preg_replace() 関数は、正規表現を使用して文字列を検索および置換するために使用されます。
構文: preg_replace(mixed $pattern,mixed $replacement,mixed $subject [, int $limit = -1 [, int &$count]])

サンプル コード:

$str = "我爱编程,编程使我快乐!";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
$new_str_gbk = preg_replace("/[x{4e00}-x{9fa5}]+/", "", $str_gbk);
$new_str = mb_convert_encoding($new_str_gbk, "UTF-8", "GBK");
echo $new_str;

出力結果は次のとおりです:

,使我快乐!

IV. まとめ

以上は、PHP で正規表現を使用して中国語の文字を照合する方法であり、正規表現を使用して妥当性を検証できます。入力値の式が実装されています。使用する場合は、漢字のエンコード方式に注意し、必要に応じて対応する正規表現関数を選択して使用する必要があります。

以上がPHP で正規表現を使用して中国語の文字と一致させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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