この記事では、preg_replace() パラメータが配列を複数回置換する場合の自己理解と置換時間に関するいくつかの解決策を学生向けに紹介します。詳細を知りたい場合は参照しないでください。
mixed preg_replace (mixed $pattern ,mixed $replacement ,mixed $subject [, int $limit = -1 [, int &$count ]] )
パターン
検索するパターンは文字列または文字列の配列です。
「e」(PREG_REPLACE_EVAL) を含むいくつかの PCRE 修飾子をこの関数に指定できます。
交換
置換に使用される文字列または文字列の配列。このパラメータが文字列で、パターンが配列の場合、すべてのパターンが置換にこの文字列を使用します。パターンと置換が両方とも配列の場合、各パターンは置換を使用します。置換内の対応する要素を置換します。置換の要素がパターンの要素よりも少ない場合、余分なパターンは空の文字列に置き換えられます。
置換には後方参照 n または (PHP 4.0.4 以降で利用可能) $n を含めることができます。構文的には後者の方が優先され、n 番目に一致するキャプチャ サブグループによってキャプチャされたテキストに置き換えられます。 99、�、および $0 は、完全なパターン マッチング テキストを表します。キャプチャ サブグループのシリアル番号のカウント方法は次のとおりです。キャプチャ サブグループを表す左括弧は、1 から開始して左から右に数えられます。置換行でバックスラッシュを使用する場合は、 、4 (""、翻訳アノテーション: これは最初は PHP 文字列であるため、エスケープ後は 2 つあり、正規表現エンジンを通過した後は元のバックスラッシュとみなされます) を使用する必要があります。
置換モードで作業しており、後方参照の後に別の数値を続ける必要がある場合 (例: 一致するパターンの直後に元の数値を追加する)、構文 1 を使用して後方参照を記述することはできません。たとえば、11 は preg_replace( となります。 ) 1 の後方参照の後に元の 1 が続くのか、それとも 11 の後方参照の後に何も続くのかがわかりません。この場合の解決策は、${1}1 を使用することです。これにより、別の $1 後方参照が作成されます。
e 修飾子を使用する場合、この関数は一部の文字 (つまり:'、"、および NULL) をエスケープし、後方参照の置換を実行します。これが完了するとき、後方参照が解決された後に一重引用符または二重引用符がないことを確認してください。原因となる構文エラー (例: 'strlen('$1')+strlen("$2")')。置換が完了すると、エンジンが処理するため、PHP の文字列構文と eval 構文に準拠していることを確認してください。結果の文字列: PHP コードは eval メソッドを使用して値を評価し、置換に含まれる最終文字列として値を返します。
件名
検索および置換する文字列または文字列の配列。
主語が配列の場合、主語の各要素に対して検索と置換が行われ、戻り値も配列になります。
制限
パターンごとのサブジェクトごとの置換の最大数は、デフォルトは -1 (無制限) です。
数える
指定した場合、完了した置換の数が入力されます。
はい、正規表現の検索と置換を実行する関数です。通常、これを使用する場合、通常は 1 つの置換で終了します。今日、PHP マニュアルを見て、比較的理解しにくい (と思われる) 例を見つけましたので、共有します。
コードは次のとおりです
コードをコピー |
|
$subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4');
$pattern = array('/d/', '/[a-z]/', '/[1a]/');
$replace = array('A:$0', 'B:$0', 'C:$0');
echo "preg_replace が返されます
リーリー
|
結果は以下の通りです:
それを見たとき、めまいがしました
一般に、一致するパターンと置換コンテンツが両方とも配列である場合、置換の要素がパターンよりも少ない場合、余分なパターンは空の文字列に置き換えられます。
$pattern はスキャナーのようなもので、一致するものが見つかったら、対応する $replace を使用して置き換えます。
上記例の置換手順は以下の通りです
/d/ は $subject 内の 1 をスキャンし、一致する内容が $0 (つまり 1) の場合、1 を A:1 に置き換えます。
次に、一致しない場合は /[a-z]/ を使用して A:1 をスキャンし、一致するコンテンツが 1 (つまり $0) の場合は、引き続き [1a] を使用します。 A:1 の 1 を C:1 に置き換えます
最初の項目は最終的に A:C:1 に置き換えられました
プロセスを簡素化する
1->A:1->A:C:1
a->B:a->B:C:a
2->A:2
b->B:b
A (一致しない場合は交換されません)
B(同上)
4->A:4
$pattern の各パターンを $subject の各要素と順番に一致させて、$pattern に対応する $replace に置き換えます。 複数回置換される可能性があります。
preg_replace の交換時間を制御する
コードは次のとおりです
コードをコピー
|
|
$v = array('vv','bb'); $str = "vv,cc,abcde,www.bkjia.com,vv"; $str=preg_replace("/$v[0]/"," ".$v[0]."",$str,1); echo $str; //bb,cc,abcde,www.bkjia.com,vv
$str=preg_replace("/$v[0]/","".$v[0]."",$str,2); //bb,cc,abcde,www.bkjia.com,bb
|
http://www.bkjia.com/PHPjc/445282.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445282.html技術記事この記事では、preg_replace() パラメータが配列を複数回置換する場合の自己理解と置換時間に関するいくつかの解決策を学生向けに紹介します。詳細を知りたい場合は参照しないでください。ミックスプレグ...