PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : regexp Perl



otelo
04-07-2004, 13:40
Hi,

ich übergebe in einem Formular den Inhalt eines Textfeldes an eine Routine, die das ganze in eine mysql DB einträgt. Vor dem Eintragen ersetze ich \n durch <br>. Das klappt soweit auch gut, nur verstehe ich nicht, was ich für eine syntax schreiben muss, um z.B. ein :-) in ein <img src="http://hjkdhkjshfk.gif"> umzuwandeln.

$texta =~ s/:-)/<img src="http:\/\/hjkdhkjshfk.gif">/g;

scheint ziemlich dumm von mir gedacht zu sein und führt zu einer Fehlermeldung.

Hat jemand eine erklärende Lösung für mich?

Danke und Gruß
otelo

RapidMax
04-07-2004, 14:30
Klammer in Smilie :-) escapen:

s/:-[)]/<img ...>/g
oder

s/:-\)/<img ...>/g
Gruss, Andy

otelo
05-07-2004, 09:53
Vielen Dank Rapid, so hat es funktioniert. Gibt es irgendwo eine online Doku, in der ich mehr über die Regexp erfahren kann?

Gruß
otelo

peschmae
05-07-2004, 16:41
Naja, dass man die ) escapen muss ist jetzt gerade ein Unterschied z.B. zwischen Sed-Regexps und Perl-Regexps.
Bei Sed darfst du das dann so nicht, weil ein \( \) jeweils zur Gruppierung verwendet wird.

Regexps sind zwar generell gleich - aber es hat jeweils recht viele subtile Unterschiede in Sachen unterstützter Funktionalität und Escapen von Sachen.

Guck mal in folgende Online-Doku: http://www.grymoire.com/Unix/index.html der Regular Expressions - Teil dürfte dir evtl. etwas weiterhelfen, auch wenn die Ausrichtung nicht Perl-Regexps ist (am Ende wird aber auf die hingewiesen) sondern Unix-Regexps.

MfG Peschmä

otelo
05-07-2004, 18:55
Danke peschmae, ich hab reingeschaut, aber irgendwie kapier ich es nicht.

ich habe jetzt folgendes Problem:
Ich übergebe einer Variable ($file) einen Pfad zu einer Datei z.B.

"X:\Test\abc\bild.jpg"

Wenn ich jetzt nur den Namen des Files (für den Fall das es ein jpg ist) haben will müsste ich doch folgendes schreiben

if ($file =~ /\*.jpg/i) { $a=1; $filename=$1; }
else { $a=0; }

Aber so scheint es nicht zu funktionieren. Was ist falsch? Der Suchkram, die Annahme dass er das Ergebnis in $1 schreibt oder beides?

Gruß
otelo