suchen-ersetzen
Luis
Hallo,
vor kurzem bekam ich Hilfe in diesem Forum.
Die "Formel":
$body =~ s(http://.*?)\s<a href="$1">$1</a>g;
umrahmt in $body eine Zeichenfolge die mit http beginnt mit dem <a> Tag, so dass ein Link daraus wird.
Gibt es noch eine Möglichkeit (Schalter), dass nicht nur die erste Zeichenfolge umrahmt wird, sondern alle, welche mit http beginnen?
Vielen Dank
Luis
PS: Was täte ich ohne dieses Forum
Hi,
vor kurzem bekam ich Hilfe in diesem Forum.
Die "Formel":$body =~ s(http://.*?)\s<a href="$1">$1</a>g;
umrahmt in $body eine Zeichenfolge die mit http beginnt mit dem <a> Tag, so dass ein Link daraus wird.
Gibt es noch eine Möglichkeit (Schalter), dass nicht nur die erste Zeichenfolge umrahmt wird, sondern alle, welche mit http beginnen?
ja, das macht das "g" am Schluß. Wenn's nicht klappt, liegt das an etwas anderem. Wird vielleicht nicht jede URL mit einem Whitespace (Leerzeichen u.ä.) beendet?
Cheatah
Danke, jetzt wurde mir der Fehler klar. Ein Zeilenumbruch ist kein Leerzeichen und so schlich sich das Missgeschick ein. Ich lasse jetzt vor jedem Zeilenumbruch zusätzlich ein Leerzeichen einfügen, dann funktioniert das (glaube ich) später in meinem Forum narrensicher.
Das sieht so aus:
$body = "$FORM{'body'}";
$body =~ s/\cM//g;
#das Leer vor <p> muss sein, damit die a href Tags sicher funktionieren
$body =~ s/\n\n/ <p>/g;
$body =~ s/\n/ <br>/g;
$body =~ s/</</g;
$body =~ s/>/>/g;
$body =~ s/"/"/g;
$bodymail = $body;
$body =~ s(http://.*?)\s<a href="$1">$1</a> g;
Vielen Dank nochmal
Gruß Luis
Hi,
vor kurzem bekam ich Hilfe in diesem Forum.
Die "Formel":$body =~ s(http://.*?)\s<a href="$1">$1</a>g;
umrahmt in $body eine Zeichenfolge die mit http beginnt mit dem <a> Tag, so dass ein Link daraus wird.
Gibt es noch eine Möglichkeit (Schalter), dass nicht nur die erste Zeichenfolge umrahmt wird, sondern alle, welche mit http beginnen?
ja, das macht das "g" am Schluß. Wenn's nicht klappt, liegt das an etwas anderem. Wird vielleicht nicht jede URL mit einem Whitespace (Leerzeichen u.ä.) beendet?
Cheatah
Danke, jetzt wurde mir der Fehler klar. Ein Zeilenumbruch ist kein Leerzeichen und so schlich sich das Missgeschick ein. Ich lasse jetzt vor jedem Zeilenumbruch zusätzlich ein Leerzeichen einfügen, dann funktioniert das (glaube ich) später in meinem Forum narrensicher.
Oh - weil die Auswertung nicht zu den Daten paßt, änderst Du das Datenformat?
Statt dessen hättest Du die Auswertung ändern können, beispielsweise an der Stelle, wo bisher das Whitespace erwartet wird, alternativ nach dem Zeilenende suchen.
Ich bin nicht besonders fit bei regular expressions aus dem Kopf, würde aber vorschlagen: Ersetze einfach "\s" in diesem Ausdruck durch "(\s$)", das könnte schon reichen.
(Glücklicherweise ist das der hintere Ausdruck, deshalb ändert es nichts an $1.)
hi!
Ich bin nicht besonders fit bei regular expressions aus dem Kopf, würde aber vorschlagen:
Ersetze einfach "\s" in diesem Ausdruck durch "(\s$)", das könnte schon reichen.
(Glücklicherweise ist das der hintere Ausdruck, deshalb ändert es nichts an $1.)
(?:\s$) würde das gleiche bewirken, allerdings ohne Rückreferenzierung. Oder er nimmt gleich ein [\s$], was bei Alternativen für ein einziges Zeichen sowieso zu empfehlen ist.
bye, Frank!