ホームページ  >  記事  >  php教程  >  PHP 正規表現の正規処理関数の概要 (preg_match、preg_match_all、preg_replace、pr)

PHP 正規表現の正規処理関数の概要 (preg_match、preg_match_all、preg_replace、pr)

WBOY
WBOYオリジナル
2016-06-13 11:57:29975ブラウズ

これまでに、区切り文字、アトム、メタキャラクター、パターン修飾子などの正規表現の基本構文を学習しました。実際、正規表現を機能させたい場合は、正規表現処理関数を借用する必要があります。このセクションでは、PHP の Perl ベースの正規表現処理関数を紹介します。これには、主にセグメント化、一致、検索、置換などの処理操作が含まれます。引き続き例を示しながら説明しますので、始めましょう。

正規表現と同様、正規表現処理関数は単独で使用することはできず、特定の関数を完成させるには組み合わせる必要があります。また、perl ベースの正規表現は POXIS 正規表現処理関数よりも高速であることも前に述べました。そのため、preg で始まる perl ベースの正規表現のみを紹介します。注: 文字列処理関数の方が高速であるため、文字列関数を使用できる場合でも、正規表現を使用して文字列を処理しないでください。

一般的に使用される正規表現処理関数をいくつか見てみましょう。

1、preg_match() 関数。

関数 preg_match() は、次のように定義される正規表現一致を実行します。

int preg_match ( string $pattern , string $subject [, array &$matches [, int $ flags = 0 [, int $offset = 0 ]]] )

は、実際にパターンに一致するサブジェクトの部分を検索し、一致する配列に保存します。例を参照してください。

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

$pattern = '/.* ?/' ;
$string = 'ようこそ phpfunsdsadsadas'; (preg_match($pattern, $string , $arr)) {
echo "正規表現 {$pattern} と文字列 {$string} が一致成功しました
" ;
print_r($arr);
} else {
echo "正規表現 {$pattern} と文字列 {$string} が失敗しましたmatch";
}
?>



2、preg_match_all() 関数。
関数 preg_match_all() 関数は、すべての結果が一致することを除いて、グローバル正規表現マッチングを実行します。その定義は preg_match() 関数と同じです。例を参照してください:


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

$pattern = '/.*?/';
$string = 'へようこそ ;dsadsadas';
if (preg_match_all($pattern, $string, $arr)) {
echo "正規表現{$pattern} および文字列{$string} 一致に成功しました
";
print_r($arr);
} else {
echo "正規表現{$pattern} に失敗しましたmatch string {$string}";
}
?>


まだ上記の例(通常の処理関数を preg_match_all( ) に変更しただけ)ですが、一致結果配列の内容が異なります。



3、preg_replace() 関数
関数 preg_replace() は、次のように定義される正規表現置換を実行します。

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

は、実際にパターンに一致する件名の部分を検索し、それを次のように置き換えます。置換。各サブジェクトの各パターンの置換の最大数を指します。デフォルトは -1 (無限) です。count が指定されている場合は、完了した置換の数が入ります。 🎜>注:


A、subject が配列の場合、preg_replace() は配列を返し、そうでない場合は文字列を返します。
B、一致するものが見つかった場合は、置換された文字列が返されます。 subject が返され、それ以外の場合は変更されていない subject が返されます。エラーが発生した場合は、NULL が返されます。n または ${n} を使用して、サブモードをパラメータ置換に適用できます。 (正規表現パターンでは、一致したサブパターンを取得するには n の形式のみを使用できます。覚えておいてください!)
D、パターン修飾子 e が使用されている場合、関数はパラメーター置換で解析できます。 (他の正規表現処理関数では、パターン修飾子 e は無視されます。)


次の包括的な例を参照してください:




コードをコピー
コードは次のとおりです。

$pattern = '/(php)|(mysql)/e'; $string = 'phpこの文字列内の mysql は大文字に置き換えられています。 '; $result = preg_replace($pattern, 'strtoupper("${1}2")', $string, -1, $count); echo $result.'

エコー $count;



上記の例では、strtoupper() 関数を文字列として解析できるように、パターン修飾子 e を使用しました。パラメータ ${1} と 2 はサブモードです。 1 とサブモード 2。上記の例の機能は、文字列 $string 内の一致したサブパターン php と mysql を大文字に置き換えることです。

4、preg_split() 関数。

preg_split は正規表現を実行して文字列を区切ります。その定義は次のとおりです。

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

は実際にサブジェクトを分割します。 Pattern に従って分割し、分割された配列を返します。このうち、limit は制限を最大でも制限部分文字列に分割し、返される最後の部分文字列には残りの部分がすべて含まれます。制限値は -1 で、0 または null は「制限なし」を意味します。

例を見てみましょう:

コードをコピーします コードは次のとおりです。


< ?php
$pattern = '/

(.*?)

/';
$string = '

php

mysql<この文字列 ;/p>分割! ';
$result = preg_split($pattern, $string, -1, PREG_SPLIT_DELIM_CAPTURE);


上記の例では, 定数 PREG_SPLIT_DELIM_CAPTURE を使用して、戻り結果に含まれるサブパターンを設定しました (PREG_SPLIT_NO_EMPTY に設定すると、preg_split() は分離された空でない部分を返します)。上記の例で正規表現の括弧を削除すると、結果は正常に一致した 2 つのサブパターン (php と mysql) は含まれなくなります。


このセクションの例は少し難しいかもしれませんが、よく使われる正規表現の処理関数を紹介しましたので、じっくり試して体験してみてください。正規表現処理関数に続きます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。