Ben bu önemsiz olduğundan emin değilim, ama konu birden çok satırdan oluşur dikkate alır bir regex oluşturamıyor değilim. Biri için "m" değiştirici çalışmak için görünmüyor.
Maxwell Troy Milton Kral doğru, ama onun cevabı biraz kısa olduğundan, ben de bu yazı ve göstermek için bazı örnekler vereceğiz.
İlk olarak, varsayılan .
meta karakter satır sonları eşleşMEyecektir. Bu PHP'nin lezzet dahil olmak üzere birçok regex uygulamaları için de geçerlidir. O dedi, metin alabilir:
$text = "Line 1\nLine 2\nLine 3";
ve regex
'/.*/'
sonra regex sadece maç Line 1
. olacak Kendiniz için bakınız:
preg_match('/.*/', $text, $match);
echo $match[0]; // echos: 'Line 1'
.*
\n
(yeni hat karakter) de "eşleştirme durur" yana. Eğer o da satır sonları maç izin istiyorsanız, sizin regex sonunda s-değiştirici (aka DOT-ALL değiştirici) append:
preg_match('/.*/s', $text, $match);
echo $match[0]; // echos: 'Line 1\nLine 2\nLine 3'
Şimdi m-değiştirici (multi-line) hakkında: Giriş dizesi başlangıç, ama aynı zamanda her satırın başlangıcı değil, sadece ^
maç izin verir. O $
giriş dizesi sonu, ama aynı zamanda her satırın sonuna sadece maç sağlayacak: $
ile aynı.
Örnek:
$text = "Line 1\nLine 2\nLine 3";
preg_match_all('/[0-9]$/', $text, $matches);
print_r($matches);
(giriş sonunda), sadece 3 eşleşir edilmektedir. Ancak:
ancak m-değiştirici etkinleştirme:
$text = "Line 1\nLine 2\nLine 3";
preg_match_all('/[0-9]$/m', $text, $matches);
print_r($matches);
Her satırda ('1 ', '2' ve '3 ') sonunda tüm (tek) hane eşleştirilir.