Regex çoklu hattı ile çalışmıyor

4 Cevap php
$regpattern4 = "!<media:description type='plain'> (.*) <\/media:description>!";

Bir XML belgesi ayrıştırma duyuyorum. Açıklamasında hiçbir satır sonları ise Regex üzerinde çalışıyor, ama nasıl satır sonları bile o iş yapabilirim?

4 Cevap

Manuel sayfa "Pattern Modifiers", bu konuda, özellikle s (PCRE_DOTALL) değiştirici İlginizi çekebilir:

If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded. This modifier is equivalent to Perl's /s modifier. A negative class such as [^a] always matches a newline character, independent of the setting of this modifier.

Sizin regex böyle bir şey olacak:

$regpattern4 = "!<media:description type='plain'> (.*) <\/media:description>!s";

Ben sonuna ayıracından sonra 's' değiştirici ekledi Not.

Neden xml ayrıştırmak için regex kullanıyorsunuz? Neden bunun üzerinden XML belgesini ve "yürüyüş" yüklemek için simplexml_load_string kullanmayın. Eğer bir yerine basit yapmak isteyen sürece, karmaşık regex tabloların daha eğilimli az hata olacaktır.

Denemek

 preg_match("/pattern/s", $text)