ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現の正規処理関数の概要 (preg_match、preg_match_all、preg_replace、pr_PHP チュートリアル)

PHP 正規表現の正規処理関数の概要 (preg_match、preg_match_all、preg_replace、pr_PHP チュートリアル)

WBOY
WBOYオリジナル
2016-07-21 15:15:40876ブラウズ

これまでに、区切り文字、アトム、メタキャラクター、パターン修飾子などの正規表現の基本構文を学習しました。実際、正規表現を機能させたい場合は、正規表現処理関数を借用する必要があります。このセクションでは、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 ]]] )

実際にパターンに一致する主題の部分を検索し、それをmatches配列に保存します。例を参照してください:

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

$pattern = '/*?/';
$string = ' ;b>phpfunsdsadsadas ';
if (preg_match($pattern, $string, $arr)) {
echo "正規表現{$pattern} と文字列{ $string}< /b>一致しました
";
print_r($arr);
} else {
echo "正規表現 {$pattern} は文字列 {$string と一致します} 失敗";
}
?>


2、preg_match_all() 関数。

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

$pattern = '/.*?/'; string = 'ようこそ phpfunsdsadsadas'; echo "正規表現 {$pattern} と文字列 {$string} が正常に一致しました
";
print_r($arr); else {
echo "正規表現 {$pattern} と文字列 {$string} が一致しませんでした";
?>


上記の例のみ通常の処理関数は preg_match_all()) に変更されますが、マッチング結果配列の内容が異なります。


3、preg_replace() 関数


function preg_replace() は、次のように定義される正規表現置換を実行します。
mixed preg_replace (mixed $pattern ,mixed $replacement ,mixed $subject [, int $limit = - 1 [, int &$count ]] )
実際には、パターンに一致する主題の部分を検索し、それを置換で置き換えます。制限は、各主題の各パターンの置換の最大数を指します。デフォルトは - 1 (無制限) です。 count が指定されている場合、完了した置換の数が埋められます。


A、サブジェクトが配列の場合、preg_replace() は配列を返します。

B、一致が見つかった場合は、置換されたサブジェクトが返され、エラーが発生した場合は、NULL が返されます。

C、サブパターンは、パラメータ置換、使用方法は n Or ${n} です。 (正規表現パターンでは、一致したサブパターンを取得するには n の形式のみを使用できます。覚えておいてください!)
D、パターン修飾子 e が使用されている場合、関数はパラメーター置換で解析できます。 (他の正規表現処理関数では、パターン修飾子 e は無視されます!)


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




コードをコピー

コードは次のとおりです:
$pattern = '/(php)|(mysql)/e'; $string = 'この文字列内のphpとmysqlは大文字に置き換えられています。 '; $result = preg_replace($pattern, 'strtoupper("${1}2")', $string, -1, $count); echo $result.'
'; ;
?>
上記の例では、strtoupper() 関数を文字列として解析できるように、パターン修飾子 e を使用しました。これがパターン修飾子 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 ]] )

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

例を見てみましょう:
コードをコピーします コードは次のとおりです:

$pattern = '/

(.*?)

/';
この文字列内の $string = '

php

mysql

';
$result = preg_split($pattern, $string, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($result)?>

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

このセクションの例は少し難しいかもしれませんが、次の正規表現の応用部分で頻繁に使用するものを試して体験してください。正規表現処理機能。

http://www.bkjia.com/PHPjc/326078.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/326078.html技術記事これまでに、区切り文字、アトム、メタキャラクター、パターン修飾子などの正規表現の基本構文を学習しました。実際、正規表現を機能させたい場合は、正規表現を借用する必要があります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPは多次元配列の値のサイズを比較して実装コードをソートする_PHPチュートリアル次の記事:PHPは多次元配列の値のサイズを比較して実装コードをソートする_PHPチュートリアル

関連記事

続きを見る