これまでに、区切り文字、アトム、メタキャラクター、パターン修飾子などの正規表現の基本構文を学習しました。実際、正規表現を機能させたい場合は、正規表現処理関数を借用する必要があります。このセクションでは、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 font>";
}
?>
コードをコピー コードは次のとおりです:
$pattern = '/.*?/';$pattern = '/(php)|(mysql)/e'; $string = 'phpこの文字列内の mysql は大文字に置き換えられています。 '; $result = preg_replace($pattern, 'strtoupper("${1}2")', $string, -1, $count); echo $result.'
上記の例では、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 = '/
(.*?)
/';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) は含まれなくなります。