Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

POSIX für Verschlüsselung von Strings und Entfernen von Kommentaren





Frage

Hallo! Ich bin in der Verwendung von Regulären Ausdrücken nicht sehr sicher, wollte aber durch ein Script den Code eines anderen Scriptes verändern lassen. Ich wollte alle Strings in diesem 2. Script durch die Zeichenfolge -funktionsname("veränderter String")- ersetzen lassen. Dies habe ich mit dem folgenden Code verwirklicht: [code] $content = preg_replace_callback('#("'.'.*'.'[^\\\\]")#Us', create_function('$string', 'return \'funktionsname("\'.veraenderString($string[1]).\'")\';'), $content); [/code] Das hat auch soweit ganz gut geklappt. Nur bei leeren Zeichenketten wird das gesamte System durcheinandergebracht. Ich habe z.B. im Code die Zeichenkette [code]return "";[/code] Hier wird dann der Inhalt übergangen und der PHP-Code, der folgt verändert, usw. Habt ihr eine Idee für einen besseren regulären Ausdruck? Des Weiteren versuche ich, alle PHP-Kommentare aus dem Script zu entfernen. Das mache ich mit [code]$content = preg_replace("#(//|\#).*#", "", $content);[/code]. Aber mit mehrzeiligen Kommentaren hab ich das noch nicht so gut hinbekommen. [code]$content = preg_replace("#/\*" . "^(\*/)" . "\*/#", "", $content);[/code] Oder so ähnlich habe ich es versucht, es hat aber leider alles nicht funktioniert. Das Verändern des Strings, wie ich es oben versucht habe, ist notwendig, damit die Funktionen für die Kommentare nicht auch Kommentare in Strings entfernen. Danke schonmal für Eure Antworten.

Antwort 1 von son_quatsch

Das erste würde ich spontan in folgendes ändern (findet auch Hochkommata und Stringkonstanten über mehrere Zeilen hinweg):

#("|')([^"]*\\1)(\\1)#Us


Mehrzeilige Kommentare kann man evt. schon hiermit erfassen:

#/\*.*\*/#Us


Ungetestet

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: