2 つの方法: 1. 通常のフィルター文字列で preg_match_all() を使用します。構文は "preg_match_all("/[\x{4e00}-\x{9fff}] /u","$str", $arr);"; 2. preg_replace() を正規表現とともに使用して、文字列内で中国語以外の文字を検索し、空の文字に置き換えます。構文は "preg_replace("/[^\x{4E00}-\x) です。 {9FFF} ] /u",'',$str)"。
このチュートリアルの動作環境: Windows7 システム、PHP バージョン 8.1、DELL G3 コンピューター
php では、次の 2 つが使用できます。関数 文字列の中国語文字のみを抽出する場合
preg_match_all() 関数を正規表現「/[\x{4e00}」とともに使用します。 -\x {9fff}]/u
" は文字列をフィルタリングして中国語の文字のみを取得できます。 は、一致する中国語文字を 1 つずつ配列に格納します (配列は 3 番目のパラメーターで指定されます)。
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎4546来到php这里。zblog,我的?#$%^天呀&())*(&^"; echo $str; preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr); var_dump($arr); ?>
結果の値は、join() 関数を使用して文字列に結合できます。
join('',$arr[0])
手順:
1) preg_match_all() 関数
preg_match_all() 関数は文字列を検索しますpreg_match_all(pattern,subject,matches,flags,offset)
pattern: 定義された正規表現である検索対象のパターン
join(separator,array)
preg_match_all() 関数を正規表現 "/[^\x" で使用します。 { 4E00}-\x{9FFF}] /u
” 文字列内で中国語以外の文字を検索し、空文字'' に置き換えます。
<?php header("Content-type:text/html;charset=utf-8"); $str= 'php中文网!-=1548'; echo $str."<br>"; $pattern = "/[^\x{4E00}-\x{9FFF}]+/u"; $newstr=preg_replace($pattern,'', $str);preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr); var_dump($newstr); ?>
説明: preg_replace()
preg_replace() 関数は、正規表現の検索と置換を実行でき、強力な文字列です。置換処理関数の場合、この関数の構文形式は次のとおりです。
preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
$subject が配列の場合、preg_replace() 関数は配列を返し、それ以外の場合は文字列を返します。
関数 preg_replace() が一致を見つけた場合は、置換された $subject を返します。そうでない場合は、変更されていない $subject を返します。 preg_replace() 関数の各パラメータ (パラメータ $limit を除く) は配列にすることができます。 $pattern パラメーターと $replacement パラメーターが両方とも配列の場合、関数は配列内に出現する順序でキーを処理します。エラーが発生した場合は NULL が返されます。
パラメータ $replacement には後方参照 \\n または $n を含めることができますが、構文的には後者の方が優先されます。このような各参照は、一致した n 番目のキャプチャ サブグループによってキャプチャされたテキストに置き換えられます。 n は 0 ~ 99 で、\\0 と $0 は完全なパターン マッチング テキストを表します。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP文字列から漢字のみを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。