PHP preg_replace

WBOY
WBOYオリジナル
2016-06-23 14:37:051767ブラウズ

はじめに: PHPに関する知識、スキル、経験、および一部のPHPソースコードなどを紹介するPHP preg_replaceの詳細ページです。

class='pingjiaF' フレームボーダー='0' src='http://biancheng.dnbcw.info/pingjia.php?id=335091' スクロール='no'> preg_replace
(PHP 3>= 3.0.9, PHP 4)

preg_replace -- 正規表現の検索と置換を実行します
説明
mixed preg_replace (混合パターン、混合置換、混合主語 [, int limit])


主語内のパターンを検索し、置換で置換します。 limit が指定されている場合は、limit の一致のみが置き換えられます。limit が省略されている場合、または値が -1 の場合は、すべての一致が置き換えられます。

replacement には、//n 形式または (PHP 4.0.4 以降) $n 形式の後方参照を含めることができますが、後者の方が優先されます。このような各参照は、n 番目にキャプチャされた括弧で囲まれたサブパターンに一致するテキストに置き換えられます。 n は 0 ~ 99 の値で、//0 または $0 はパターン全体と一致するテキストを指します。左かっこを左から右に数えて (1 から開始)、サブパターンの数を取得します。


数値による後方参照に続く置換パターン (つまり、一致するパターンの直後に続く数値) の場合、後方参照を表すためによく知られている //1 表記を使用することはできません。たとえば、//11 では、preg_replace() が //1 の後に数字 1 を続ける逆参照を求めるのか、//11 への逆参照を求めるのか混乱させます。この場合の解決策は、/${1}1 を使用することです。これにより、$1 の分離された後方参照が作成され、他の 1 は単なるリテラルとして残ります。

例 1. 数字が続く逆参照の使用法

$string = "2003 年 4 月 15 日"
$pattern = "/(/w+) (/d+), (/d+)/ i";
$replacement = "/${1}1,/$3";
print preg_replace($pattern, $replacement, $string);

/* 出力
======

April1,2003

*/
?>

一致するものが見つかった場合は、置換された件名が返され、そうでない場合は、元の変更されていない件名が返されます。

preg_replace() のすべてのパラメータ (limit を除く) は配列にすることができます。 pattern と replace の両方が配列の場合、それらのキーは配列内に出現する順序で処理されます。これは、インデックスの番号順と必ずしも同じではありません。どのパターンをどの置換で置き換えるかを識別するためにインデックスを使用する場合、preg_replace() を呼び出す前に配列を ksort() でソートする必要があります。

例 2. preg_replace() でのインデックス配列の使用

$string = "足の速い茶色のキツネが怠惰な犬を飛び越えました。"

$patterns[0] = "/quick/"; $patterns[1] = "/茶色/";
$patterns[2] = "/キツネ/";
$replacements[1] = "黒"; replaces[0] = "slow";

print preg_replace($patterns, $replacements, $string);

/* 出力
======

クマの黒人は怠惰な犬
を飛び越えました。 */

/* パターンと置換を ksort することで、
必要なものが得られます。 */

ksort($replacements)

print preg_replace($patterns, $replacements, $ string); );

/* 出力
======

遅いツキノワグマは怠惰な犬を飛び越えました

?>

subject が配列の場合、subject 内の各要素は実行されます。項目を検索して置換し、配列を返します。


pattern と replace が両方とも配列の場合、preg_replace() は、subject を検索して置換するためにそれらから値を取り出します。置換の値がパターンの値よりも少ない場合、空の文字列が残りの置換値として使用されます。 pattern が配列で、replacement が文字列である場合、この文字列は pattern の各値の置換値として使用されます。その逆は無意味です。

/e 修飾子により、 preg_replace() は置換引数を PHP コードとして処理します (適切な後方参照置換後)。ヒント: 置換によって有効な PHP コード文字列が形成されていることを確認してください。そうでない場合、PHP は preg_replace() を含む行で構文解析エラーを報告します。

例 3. 複数の値を置き換えます

$patterns = array ("/(19|20)(/d{2})-(/d{1,2})-(/d { 1,2})/",
"/^/s*{(/w+)}/s*=/");
$replace = array ("//3///4///1// 2 ", "$//1 =");
print preg_replace ($patterns, $replace, "{startDate} = 1999-5-27");
?>

この例では次のように出力されます:

$startDate = 5/27/1999
例 4. /e 修飾子の使用

preg_replace ("/(]*>)/e",
"'//1'.strtoupper('//2').'//3 '",
$html_body);
?>

これにより、入力文字列内のすべての HTML タグが大文字になります。

「PHP preg_replace」のその他の関連記事》

J2EE を愛する Java Michael Jackson Video Station JSON オンライン ツール

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