Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 1999 Teil von September

SELFHTML Forumsarchiv
suchen-ersetzen

Informationsseite
  1. Seite  suchen-ersetzen von Luis, 25. 09. 1999, 20:15
    • Seite (PERL) suchen-ersetzen von Cheatah, 25. 09. 1999, 20:55
      • Seite (PERL) Danke! von Luis, 25. 09. 1999, 21:58
        • Seite (PERL) Danke! von Michael Schröpl, 27. 09. 1999, 17:54
          • Seite (PERL) Danke! von Frank Schönmann, 27. 09. 1999, 19:47
nach unten

suchen-ersetzen

Die folgende Nachricht zum Thema stammt von: Luis, 25. 09. 1999, 20:15

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

nach obennach unten

suchen-ersetzen

Die folgende Nachricht zum Thema stammt von: Cheatah, 25. 09. 1999, 20:55

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

nach obennach unten

Danke!

Die folgende Nachricht zum Thema stammt von: Luis, 25. 09. 1999, 21:58

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


nach obennach unten

Danke!

Die folgende Nachricht zum Thema stammt von: Michael Schröpl, 27. 09. 1999, 17:54

»» 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.)

nach obennach unten

Danke!

Die folgende Nachricht zum Thema stammt von: Frank Schönmann, 27. 09. 1999, 19:47

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!

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 1999 Teil von September

© 1998-2006 Seite Impressum, Software: Classic Forum