2016-08-09 25 views
0

Zunächst möchte ich zugeben, dass ich nicht gut in Regex bin.Regex Capture Text zwischen zwei dynamischen Texten

Ich habe diese Saite:

[my_section title="Foo" the_id="123"][my_text]my example text[/my_text][/my_section] 

Was Art und Weise ist, alles zu erfassen, außer [my_section title="Foo" the_id="123"] und [/my_section] oder einfach einen beliebigen Text zwischen diesen beiden zu sagen?

Mein Wissen darüber funktioniert überhaupt nicht.

Ich kann nicht literal [my_section title="Foo" the_id="123"] verwenden, weil die Parameter nach [my_section dynamisch ist.

Antwort

1

Wie wäre:

preg_match('~\[my_section[^\]]*\](.+?)\[/my_section\]~', $string, $match); 

Die Zeichenfolge, die Sie in $match[1]

ist möchten Wenn Sie Zeilenumbrüche übereinstimmen soll, fügen Sie den s Modifikator:

preg_match('~\[my_section[^\]]*\](.+?)\[/my_section\]~s', $string, $match); 
+0

Danke, Sir. Das funktioniert. :) Haben Sie Vorschläge, die neue Zeile auch zu übernehmen? Die Option "m" funktioniert nicht. –

+2

@OhhMee Verwenden Sie 's' Modifikator. – revo

+0

@revo Danke. –