PHP regular expression für escaped quote und double quote

TinCan

Newbie
Registriert
Jan. 2014
Beiträge
1
Hallo,

ich habe folgendes problem :

ich möchte aus einer *.php Datei alle quoted strings entfernen
PHP:
// programmcode
$variable = 'text';
// weiterer programmcode
$variable = 'text mit escaped quotes \'escaped text\' weiterer text';
// weiterer programmcode
$variable = 'text mit escaped quotes \''.irgendwas().'\' weiterer text';

ich habe mir mittlerweile folgenden regular expression gebastelt, der 'eigentlich' funktionieren sollte

Code:
'/(\'|")(\\.|[^\1\\])*(\1)/'

soweit ich weis macht der reges folgendes:

Code:
/1 = läßt 1 Zeichen zu : ' oder " (öffnen eines quotes)
/2 = läßt zu : \ + 1 beliebiges Zeichen oder 1 Zeichen dass weder \1 (also ' oder ") noch \ ist
/3 = wie /1 (also schliessen des quotes)

leider führt preg_replace() zu folgendem Endergebnis :

PHP:
$matches Array:
(
    [0] => 'text';
// weiterer programmcode
$variable = 'text mit escaped quotes \'escaped text\' weiterer text';
// weiterer programmcode
$variable = 'text mit escaped quotes \''.irgendwas().'\' weiterer text'
    [1] => '
    [2] => t
    [3] => '
)

daher mal meine frage : was mache ich da falsch ?
 
Hmm, dein Regex sieht ja so aus (ohne Escaping)
('|")(\.|[^\1\])*(\1)
.
Da ist einmal ein Syntaxfehler vor ] (du musst \\ (bzw. quoted \\\\) schreiben).
Und dann ist dein \. sicherlich nicht das, was du wolltest (du kannst es einfach weglassen).

BTW: Dieser Regex ist nicht sicher... ( \';drop table;--' wird zu \\';drop table;--\' )
 
Zurück
Oben