PHP では、正規表現は一般的に使用される文字列一致ツールです。正規表現を使用すると、文字列から必要な情報を簡単に抽出できます。この記事では、PHP 正規表現を使用して文字列から複数の部分文字列を抽出する方法を紹介します。
preg_match_all($pattern, $string, &$matches, $flags = PREG_PATTERN_ORDER, $offset = 0);
このうち、$pattern は一致する必要がある正規表現を表し、$string は一致する必要がある文字列を表し、$matches は使用される配列です。一致した結果をすべて保存します。 $flags は一致フラグを表し、PREG_PATTERN_ORDER または PREG_SET_ORDER になります。 $offset はマッチングの開始位置を表し、デフォルトは 0 です。
次は、文字列のすべての数値を一致させる必要があると仮定した具体的な例です:
$str = 'abc123def456ghi789jkl'; preg_match_all('/d+/', $str, $matches); print_r($matches[0]);
出力結果は次のとおりです:
Array ( [0] => 123 [1] => 456 [2] => 789 )
result 、 preg_match_all 関数によって返される $matches 配列では、最初の要素は正規表現全体と一致する結果を表し、次の要素は正規表現内の各括弧に対応する結果を表します。
$str = 'abc123def456ghi789jkl'; preg_match_all('/([a-z]+)(d+)/', $str, $matches); print_r($matches);
出力結果は次のようになります:
Array ( [0] => Array ( [0] => abc123 [1] => def456 [2] => ghi789 ) [1] => Array ( [0] => abc [1] => def [2] => ghi ) [2] => Array ( [0] => 123 [1] => 456 [2] => 789 ) )
$matches 配列の結果から見ると、 の最初の要素は正規表現全体の一致結果であり、後続の要素は正規表現内の各括弧の一致結果に対応します。このようにして、文字列から複数の部分文字列を簡単に抽出できます。
この問題を解決するには、できるだけ少ない文字と一致する非貪欲モードを使用できます。正規表現では、欲張らないパターンを示すために疑問符を使用します。たとえば、上記の例で「aa」と「bb」を一致させるには、正規表現「/a. ?b/」を使用します。
$str = 'aabbcc'; preg_match_all('/a.+?b/', $str, $matches); print_r($matches[0]);
出力結果は次のとおりです:
Array ( [0] => aa [1] => bb )
結果から、非貪欲モードは必要な結果を正確に一致させるのに役立つことがわかります。
概要
この記事では、PHP 正規表現を使用して文字列から複数の部分文字列を抽出する方法について説明します。 preg_match_all 関数、ブラケットグループ化、non-greedy モードにより、さまざまな状況に柔軟に対応し、必要な情報を抽出できます。実際の開発では、正規表現を使用すると、文字列マッチングの効率と成功率が大幅に向上します。
以上がPHP 正規表現: 文字列から複数の部分文字列を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。