2010-11-24 8 views
0

ich diesenPHP reguläre Ausdrücke fangen zwischen Anführungszeichen

echo "<p>".preg_replace("/\'[^\)]+\'/","",$line)."</p>"; 

erstellt haben, die Worte zwischen den einzelnen Anführungszeichen „Datenschutzeinstellungen“ von dieser Linie

$_lang['privacy.settings'] = 'Privacy settings'; 

zu bekommen, aber ich diesen Ausgang

$_lang[ 

Ich kann es nicht herausfinden. Regex ist so kompliziert.

+2

Was ist Ihre Frage? – Alex

+0

Gibt es hier eine Frage? –

+1

1) Was ist das Problem? 2) Warum verwenden Sie 'preg_replace' anstelle von' preg_match'? 3) Warum versuchen Sie, $ $ result' einen Wert zuzuweisen? – You

Antwort

0

Wenn Sie versuchen, den Wert aus dieser Linie zu bekommen, dann versuchen:

echo "<p>" . preg_replace("/^.*=.*\'(.+)\'.*$/", "$1", $line) . "</p>"; 
+0

gibt Ausgabe wie – Ritz

+0

$ _lang ['privacy.settings'] = 'Datenschutzeinstellungen' – Ritz

+0

Wirklich? Ich habe das getestet und es funktioniert für mich. Wobei '$ line = '$ _lang [\' privacy.settings \ '] = \' Datenschutzeinstellungen \ '';' – Orbling

1

Die + in Ihrer regex gierig ist, so wird es die Zeichenfolge so lange wie möglich entsprechen. Sie können dieses Problem beheben, mit:

preg_replace("/\'[^\)\']+\'/","",$line) 

oder

preg_replace("/\'[^\)]+?\'/","",$line) 

The? Im zweiten Beispiel sagt der Regex, dass + nicht gierig sein soll.