ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルで正規表現を使用して中国語の実装ノートを抽出する

PHP_PHP チュートリアルで正規表現を使用して中国語の実装ノートを抽出する

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

正規表現を使用して PHP で中国語の実装ノートを抽出する

この記事では、主に PHP で中国語の実装ノートを抽出するための正規表現の使用について紹介し、韓国語と日本語の正規表現についても説明し、実装コードも示します。使用例、困っている友達は参考にしてください

最近、上司からデータ重複チェックの小さな演習を依頼されました。これには、中国語フィールドを含むファイルから中国語フィールドを抽出して保存し、PHP を使用して開発することが含まれます。真ん中は、PHP の正規表現の中国語のマッチングの問題です。インターネットでいろいろ調べましたが、これも非常にわかりにくく、正確な情報がありませんでした。自分のコードを修正してテストした後、最初に抽出関数を書き留めました。

最初に注意すべきことは、全角文字のエンコーディングの問題です。ここでは、将来、中国語と同じ意味の韓国語や日本語などのエンコーディングの問題も発生する可能性があります。

1.GBK(GB2312/GB18030)

コードは次のとおりです:


x00-xff GBK 2 バイトエンコード範囲
x20-x7f アスキー
xa1-xff 中国語 gb2312
x80-xff 中国の GBK
2. UTF-8 (ユニコード)

コードは次のとおりです:


u4e00-u9fa5 (中国語)
x3130-x318F (韓国語
) xAC00-xD7A3 (韓国語)
u0800-u4e00 (日本語)

Notepad++ では、まず通常の書き込みが間違っているかどうかをテストできます。最初の式をテストするために [u4e00-u9fa5]+ を使用しました。+ 記号は複数の

を示します。

PHP中使用正则表达式提取中文实现笔记   帮客之家

一致記号。結果は期待どおりです。では、この通常のルールをスクリプトで使用できますか?

テストしてみましょう。preg_match_all('/[u4e00-u9fa5]+/', $subject,$matches) 呼び出しを使用すると、次の結果が表示されます: Compilation failed: PCRE doesn't support L, l, N{ name} 、U、またはオフセット 2 の u。 。 。 。とても大きくないですか? ?その理由は何でしょうか?

多くの情報を調べた結果、u (PCRE_UTF8) は上記の PCRE であることがわかりました。これは Perl 互換の正規表現ライブラリを含む Perl ライブラリです。この修飾子は、Perl と互換性のない PCRE の追加機能を有効にします。パターン文字列は UTF-8 として扱われます。この修飾子は、Unix では PHP 4.1.0 以降、win32 では PHP 4.2.3 以降で使用できます。 PHP 正規表現には、16 進数データを表現するさまざまな方法もあります。PHP では、16 進数データを表すために x が使用されます。次に、コードを最適化すると、検出関数は次のようになります:

コードは次のとおりです:

クラスstoreDataAdapterはStoreを拡張します{
プライベート $dsData
/**
* データ変換関数。preg_match_all を呼び出して、$pattern の規則性に基づいて数値マッチングを実行し、返された結果を配列の形式で $matches に保存します。
* $matches[0] にはパターン全体に一致するテキストが含まれ、$matches[1] には最初にキャプチャされた括弧内のサブパターンに一致するテキストが含まれます。以下同様です
* @Store::data_convert() を参照
*/
パブリック関数 data_convert($pattern,$subject) {
$matches=array(); if (preg_match_all($pattern, $subject,$matches)){
$matches[0] を返します
}その他
{
null を返す
}
}
}

呼び出すと、次のようになります:

コードは次のとおりです:

$store=新しいstoreDataAdapter($txtContent); $match=配列(); $dsName=$store->data_convert(‘/[x7f-xff]+/’,$txtContent); foreach ($dsName として $val){
echo $val."
"; }



入力ファイルは次のとおりです:

、中国語を抽出した後の出力ファイルの内容は次のとおりです:

、予想されるニーズに沿ったもの。

http://www.bkjia.com/PHPjc/971941.htmlwww.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/971941.html技術記事この記事では、主に PHP で正規表現を使用して中国語の実装ノートを抽出する方法を紹介します。この記事では、韓国語と日本語の正規表現についても説明します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。