2012-01-19 18 views

Odpowiedz

14

Potrzebujesz DOTALL modifer /s, ponieważ kropka . domyślnie wyklucza linebreaks. Modyfikator /g OTOH nie jest legalny w PHP i PCRE.

Powinieneś także użyć .*?, aby nie pasować zbyt szeroko.

3

Ponieważ . domyślnie pasuje do każdego znaku , za wyjątkiem linii nowej, chyba że zostanie załadowany przełącznik s.

Zobacz wyjaśnienie przełączników regex here.

W szczególności

s (PCRE_DOTALL) Jeżeli modyfikatora jest zestaw metaznakiem punkt w strukturze oznacza wszystkie postacie, w tym nowych linii. Bez tego nowe linie są wykluczone.

Tak /(<pre>|<code>|\[code])(.*)(</pre>|</code>|\[/code])/is.

(nr g, użyj preg_match_all).

6

W PCRE: "." nie pasuje do każdego znaku, pasuje każda rzecz, która nie jest nowa linia:

Poza klasą znaków, kropka w strukturze dopasowuje dowolny jeden znak w temacie, tym o charakterze non-drukarskiej, ale nie (domyślnie) nowa linia.

(http://www.php.net/manual/en/regexp.reference.dot.php)

Podaj np [\ s \ s] Zamiast.

+3

Albo, wiesz, możesz wysłuchać każdej z trzech ważnych odpowiedzi, które pojawiły się podczas pisania mojego. –

Powiązane problemy