Hallo,
ich versuche jetzt schon ziemlich lange vergebens einen regulären Ausdruck zu finden, der Links entdeckt. Mein momentaner Stand sieht so aus :
if ($changetext =~ /(http://[A-Za-z0-9._-%&?/]+?)/ig) {
my $tag = "<span class="farbmarkierung">$1</span>";
$changetext =~ s/$1/$tag/;
}
Ich würde statt deinem Teil folgendes schreiben:
if ($changetext =~ /(http|https)(://)([0-9a-z][0-9a-z-]+.)+([a-z]{2,4})([0-9a-z-/?%=+&._]*?)/){
$changetext =~ s/(http|https)(://)([0-9a-z][0-9a-z-]+.)+([a-z]{2,4})([0-9a-z-/?%=+&._]*?)/<span class="farbmarkierung">$1$2$3$4$5</span>/gim;
}
dein ansatz ersetzt nur den ersten Link in $changetext
Er findet nur http://w .
Und 2. würde ich noch gerne wissen, wie ich diese Schleife am Besten schreiben kann, dass ich nicht $1 verwenden muss, weil wenn ich zB $changetext statt $1 in der 2. Zeile einsetzt und die Klammern weglasse, kopiert er nachher irgendwie den Text ab der gefundenen Stelle und fügt ihn am Schluss wieder dran.
wenn ich überhaupt die $tag Zeile weglasse und direkt $1 mit <span...>$1</span> ersetze, schneidet er mir einfach des Gefundene weg.
Ich frage deswegen weil den ganzen Ausdruck einklammern ist ja wohl ziemlich uneffizient, aber wie gesagt, wenn ich $changetext direkt verwende, bekomme ich den Text plötzlich 2 Mal.
Was kann ich tun ?
$xNeTworKx.