2011-01-11 9 views
3

Hallo bekommt ich den Inhalt zwischen 2 Strings ähnlich wie Tags wie diese erhalten muß:Regulärer Ausdruck Text zwischen 2 string

[code] 
some text and 
new line 
[/code] 

Ich versuche, mit diesem regulären Ausdruck, aber es funktioniert nur ohne neue Linie:

preg_match("/\[view\](.*)\[\/view\]/",$string, $results); 

Ich brauche etwas, das auch mit Zeilenumbrüchen funktioniert! und irgendwelche Zeichen, die ich zwischen diesen 2 "Markierungen" setze Irgendeine Idee?

Antwort

9

Verwenden Sie den s Modifikator in Ihren Anruf ein mehrzeiliges Suche zu tun:

preg_match("/\[view\](.*)\[\/view\]/s",$string, $results); 

Am Ende sollten Sie nicht regex verwenden komplexe Parsing zu tun. Es ist nicht für den Job. Suchen Sie eine Auszeichnungssprache, die Ihrem Zweck entspricht, und verwenden Sie eine vorhandene Bibliothek, um sie zu analysieren.

+0

Vielen Dank! es funktioniert auch mit einem "s" Modifikator (gerade entdeckt: P) Danke – MatterGoal

+0

@Asap Tatsächlich funktioniert es nicht mit einem "m" Modifizierer; Die richtige Antwort ist, wie Sie sagen, der 's' Modifikator. Sorry für meine vorherige falsche Antwort ... – lonesomeday

+0

Versuchen Sie es gegen '[view] foo [view] bar [/ view] baz [/ view]', was bekommen Sie? – ircmaxell

Verwandte Themen