ホームページ  >  記事  >  バックエンド開発  >  PHP文字列から漢字のみを抽出する方法

PHP文字列から漢字のみを抽出する方法

青灯夜游
青灯夜游オリジナル
2022-09-22 19:44:534430ブラウズ

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)"。

PHP文字列から漢字のみを抽出する方法

このチュートリアルの動作環境: Windows7 システム、PHP バージョン 8.1、DELL G3 コンピューター

php では、次の 2 つが使用できます。関数 文字列の中国語文字のみを抽出する場合

  • #preg_replace() function

  • #preg_match_all() function
##方法 1: preg_match_all() 関数を使用します。

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);
?>

結果の値は、j​​oin() 関数を使用して文字列に結合できます。 PHP文字列から漢字のみを抽出する方法

join(&#39;&#39;,$arr[0])

PHP文字列から漢字のみを抽出する方法手順:

1) preg_match_all() 関数

preg_match_all() 関数は文字列を検索します

preg_match_all(pattern,subject,matches,flags,offset)

のすべての結果は次のように説明されます:

pattern: 定義された正規表現である検索対象のパターン

    subject: 検索する文字列検索対象;
  • matches: オプションのパラメータ (多次元配列)、一致するすべての結果を保存するために使用され、配列の並べ替えは $flags で指定されます;
  • flags: オプションの選択パラメータ、使用できます次のタグと組み合わせて使用​​します (PREG_PATTERN_ORDER と PREG_SET_ORDER は同時に使用できないことに注意してください):
  • PREG_PATTERN_ORDER: 結果は $matches[0] に並べ替えられ、完全なパターン $matches のすべての一致が保存されます。 [1] サブグループ内の最初のすべての一致を保存するなど。
    • PREG_SET_ORDER: 結果は、$matches[0] には最初の一致で得られたすべての一致 (サブグループを含む) が含まれ、$matches[1] には 2 番目の一致で得られたすべての一致 (サブグループを含む) が含まれるように並べ替えられます。等々。
    • PREG_OFFSET_CAPTURE: このフラグが渡されると、見つかった各一致が、ターゲット文字列に対する相対的なオフセットを増加して返されます。これにより、$matches 内の各一致文字列要素が、0 番目の要素が一致文字列で、最初の要素がサブジェクト内の一致文字列のオフセットになるように変更されることに注意してください。
    • offset: オプションのパラメータ $offset は、ターゲット文字列内の指定された位置から検索を開始するために使用されます (単位はバイト)。
  • preg_match_all() 関数は、パターンの一致数 (おそらく 0) を返すか、エラーが発生した場合は FALSE を返すことができます。
2) join() 関数

join() 関数は、配列要素で構成される文字列を返します。

join() 関数は、implode() 関数のエイリアスです。

join(separator,array)

区切り文字: オプション。配列要素の間に何を配置するかを指定します。デフォルトは「」(空の文字列)です。
  • 配列: 必須。文字列に結合される配列。
  • 戻り値: 配列要素で構成される文字列を返します。

方法 2: preg_replace() 関数を使用します。

preg_match_all() 関数を正規表現 "/[^\x" で使用します。 { 4E00}-\x{9FFF}] /u

” 文字列内で中国語以外の文字を検索し、空文字

'' に置き換えます。

<?php
header("Content-type:text/html;charset=utf-8");
$str= &#39;php中文网!-=1548&#39;;
echo $str."<br>";
$pattern = "/[^\x{4E00}-\x{9FFF}]+/u";
$newstr=preg_replace($pattern,&#39;&#39;, $str);preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr);
var_dump($newstr);
?>

PHP文字列から漢字のみを抽出する方法説明: preg_replace()

preg_replace() 関数は、正規表現の検索と置換を実行でき、強力な文字列です。置換処理関数の場合、この関数の構文形式は次のとおりです。

preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])

パラメータの説明は次のとおりです。

  • $pattern: 検索するパターン (文字列または文字列の配列)
  • $replacement: 置換に使用される文字列または文字列の配列。この引数が文字列で $pattern が配列の場合、すべてのパターンがこの文字列で置き換えられます。 $pattern と $replacement が両方とも配列の場合、各 $pattern は $replacement 内の対応する要素で置き換えられます。 $replacement の要素が $pattern よりも少ない場合、余分な $pattern は空の文字列に置き換えられます。
  • $subject: 検索および置換される文字列または文字列配列。$subject が配列の場合、検索および置換は $subject の各要素に対して実行され、戻り値も 1 つの配列になります。 。
  • $limit: オプションのパラメーター。各 $subject のパターンごとの置換の最大数。デフォルトは -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 サイトの他の関連記事を参照してください。

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