Luis: ersetzen

Hallo,

in der Variablen $body befindet sich Text.
Ich möchte gerne, dass alle Stellen gefunden werden, die mit "http://" beginnen. Diese Stellen sollen dann bis zum nächsten Leerzeichen erfasst werden und mit    <a href="   auf der einen Seite, bzw.    "></a>     auf der anderen Seite "eingerahmt" werden, dass halt ein richtiger Link daraus wird!

Wie mache ich das am schnellsten

Vielen Dank für Antworten

Luis

  1. Hi,

    Wie mache ich das am schnellsten

    mit Perl. Dort gibt es ein wertvolles Werkzeug namens Regular Expressions. Wenn Du Perl bereits auf Deiner Festplatte hast (wenn nicht: http://www.activestate.com/ActivePerl), ist Dir perldoc perlre dringend angeraten.

    So mal'n Quickhack:

    while ($body =~ #(http://[^\s]+)\s#g) { print "<a href="$1"></a>"; }

    Cheatah

    1. hi!

      Wie mache ich das am schnellsten
      while ($body =~ #(http://[^\s]+)\s#g) { print "<a href="$1"></a>"; }

      Das war aber IMHO nicht, was er wollte. In $body sollten einfach alle URLs mit <a>-Tags umrahmt werden, nicht einfach ausgegeben. Also eher etwas in der Richtung:
        $body =~ s(http://.*?)\s<a href="$1">$1</a>g;

      bye, Frank!

      1. Hi Frank!

        $body =~ s(http://.*?)\s<a href="$1">$1</a>g;

        Yoh, bis auf eine Kleinigkeit. Nach dem </a> sollte noch ein Leerzeichen hin, denn sonst wird das im vorderen Teil erkannte einfach weggeschmissen, und das sieht dann bloed aus, wenn zwischen dem Link und dem folgenden Wort kein Zwischenraum mehr ist. Also
          $body =~ s(http://.*?)\s<a href="$1">$1</a> g;

        Calocybe

        1. Hallo,

          zuerst einmal Danke für euere Hilfe. Aber kann das sein, dass sich ein kleiner Tippfehler eingeschlichen hat. Wenn ich die Variable $body mit folgendem umwandeln möchte

          »»    $body =~ s(http://.*?)\s<a href="$1">$1</a> g;

          versagt meine Forum.pl ihren Dienst!

          Viele Grüße
          Luis

          1. hi!

            zuerst einmal Danke für euere Hilfe. Aber kann das sein, dass sich ein kleiner Tippfehler
            eingeschlichen hat. Wenn ich die Variable $body mit folgendem umwandeln möchte
            »»    $body =~ s(http://.*?)\s<a href="$1">$1</a> g;
            versagt meine Forum.pl ihren Dienst!

            Danke für deine Mühe, so ausführliche Fehlerbeschreibungen beizufügen. Wir werden uns sofort über eine Lösung Gedanken machen.

            bye, Frank!

            1. hi!

              zuerst einmal Danke für euere Hilfe. Aber kann das sein, dass sich ein kleiner Tippfehler
              eingeschlichen hat. Wenn ich die Variable $body mit folgendem umwandeln möchte
              »»    $body =~ s(http://.*?)\s<a href="$1">$1</a> g;
              versagt meine Forum.pl ihren Dienst!

              Danke für deine Mühe, so ausführliche Fehlerbeschreibungen beizufügen. Wir werden uns sofort über eine Lösung Gedanken machen.

              bye, Frank!

              Tut mir leid, aber die Fehlermeldungen bei perl sind nicht sehr aufschlussreich.

              Ich habe also oben vorgeschlagene Formel in die Zwischenablage kopiert, und dann in meine forum.pl eingefügt.
              Dann kam die Fehlermeldung im Browser, "http 500 interner Serverfehler" "die Seite kann nicht angezeigt werden".

              if ($FORM{'body'}) {
                    $body = "$FORM{'body'}";
                    $body =~ s/\cM//g;
                    $body =~ s/\n\n/<p>/g;
                    $body =~ s/\n/<br>/g;

              $body =~ s/</</g;
                    $body =~ s/>/>/g;
                    $body =~ s/"/"/g;
                 # fuer email ohne link
                 $bodymail = $body
                 # fuer html mit link s
                    $body =~ s(http://.*?)\s<a href="$1">$1</a> g;

              }
                 else {
                    &error(no_body);
                 }

              Viele Grüße
              Luis

              1. Tut mir leid, aber die Fehlermeldungen bei perl sind nicht sehr aufschlussreich.

                Und ob sie das sind. Du müßtest sie uns bloß zeigen.

                Der freundliche Tankwart empfiehlt: http://www.teamone.de/selfaktuell/schroepl03.htm#a9 und
                http://www.teamone.de/selfaktuell/schroepl03.htm#a19.