php preg正規表現
1538 ワード
Note:
反斜線は、単一引用符文字列と二重引用符文字列の両方に特別な意味を持つため、1つの反斜線に一致するには、モードに「\\」と書く必要があります.原文:「/\/」は、まず文字列として反斜線がエスケープされ、エスケープ後の結果は//、これが正規表現エンジンが取得したモードであり、正規表現エンジンもはエスケープフラグであり、セパレータ/をエスケープし、エラーを得るため、1つの反斜線に一致するには、4つの反斜線が必要です.
事実上
preg_replace_callback
文字列の正規表現に一致する各値をコールバック関数で処理して返します.
関数は、最初の一致後も検索を続行します.
まずマッチングして得られる[{summary}]
次にマッチングを検索し続けます[{items}]
最後のマッチングが得られる[{form}]
次の例..正規表現..一致する結果はそれぞれ..[{summary}],[{items}] [{form}]
コールバック関数に3つの値を使用...
次の2つの一致値の違いを比較します.
反斜線は、単一引用符文字列と二重引用符文字列の両方に特別な意味を持つため、1つの反斜線に一致するには、モードに「\\」と書く必要があります.原文:「/\/」は、まず文字列として反斜線がエスケープされ、エスケープ後の結果は//、これが正規表現エンジンが取得したモードであり、正規表現エンジンもはエスケープフラグであり、セパレータ/をエスケープし、エラーを得るため、1つの反斜線に一致するには、4つの反斜線が必要です.
事実上
$attribute = "sdfsdf.555";
preg_match('/([\w]+)(\.)([0-5]|.)/', $attribute, $matches);
Array
(
[0] => sdfsdf.555 // ([\w]+)(\.)([0-5]|.) . $attribute = "sssss555"
[1] => sdfsdf // (\w+)
[2] => . // (\.)
[3] => 555 // ([0-5]*)
)
preg_replace_callback
文字列の正規表現に一致する各値をコールバック関数で処理して返します.
関数は、最初の一致後も検索を続行します.
まずマッチングして得られる[{summary}]
次にマッチングを検索し続けます[{items}]
最後のマッチングが得られる[{form}]
次の例..正規表現..一致する結果はそれぞれ..[{summary}],[{items}] [{form}]
コールバック関数に3つの値を使用...
次の2つの一致値の違いを比較します.
$layout = "{summary}
{items}
{form}";
$content = preg_replace_callback("/{\\w+}/", function ($matches) {
print_r($matches);
return $matches[0];
}, $layout);
print_r($content);
$layout = "{summary}-{items}-{form}";
$content = preg_replace_callback("/({\\w+})(-)/", function ($matches) {
print_r($matches);//["{summary}-","{summary}","-"]
return $matches[0];
}, $layout);
print_r($content);