PHP Regulärer Ausdruck: match alles (einschließlich weiße Leerzeichen)
-
18-09-2019 - |
Frage
text text text
text text text
{test}
content
content
content
{/test}
text text text
text text text
Ich brauche zwei getrennte Ergebnisse aus der obigen Zeichenfolge zu erhalten:
1.
{test}
content
content
content
{/test}
2.
content
content
content
so, was soll die beiden separaten regulären Ausdruck Muster PHP sein, um die beiden oben genannten Ergebnisse zu erhalten
Lösung
Was ist so etwas wie folgt aus:
$str = <<<STR
text text text
text text text
{test}
content
content
content
{/test}
text text text
text text text
STR;
$m = array();
if (preg_match('#\{([a-zA-Z]+)\}(.*?)\{/\1\}#ism', $str, $m)) {
var_dump($m);
}
, die diese Art von Ausgabe bekommen:
array
0 => string '{test}
content
content
content
{/test}' (length=50)
1 => string 'test' (length=4)
2 => string '
content
content
content
' (length=37)
Also, in $m[0]
Sie haben den ganzen gefundenen String (dh Tags + Inhalt) , und in $m[2]
Sie nur zum Inhalt zwischen den Tags haben.
Hinweis I "generic" Tags verwendet haben, und nicht speziell "test
"; Sie können das ändern, wenn Sie nur „test
“ Tags haben.
Für weitere Informationen können Sie auf einen Blick, mindestens:
Andere Tipps
So erfassen die Tags und Inhalt zusammen:
/(\{test\}[^\x00]*?\{\/test\})/
So erfassen nur den Inhalt:
/\{test\}([^\x00]*?)\{\/test\}/
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow