Jakob Schneider: [link:http://www.irgendwas.de] umwandeln

Hi Leute,

nach einer nSuche bin ich auf einige, noch aktuelle Beiträge zum Thema von "Johannes Bauer" gestoßen, in denen er ebenfalls Links (jedoch mit anderem Begrenzerzeichen) in einer Variable in html-Code(also <a href="http://...">Linktext</a>) umwandeln wollte.
Leider haben mir diese Beiträge in keinster Weise weitergeholfen.
Ich hatte es auch schon mit REGExps versucht, jedoch ohne Erfolg.
Deswegen stelle ich diese Frage erneut: Wie kann ich als Selfhtml-Links angebebene Bestandteile eines Strings in html-code umwandeln?

Danke schonmal...

Dankeschön im Voraus!

LG Jakob --
Homepage? Naja, noch im Aufbau... : http://www.aquariensite.de

  1. Hallo,

    kannst Du mal ein Beispiel folgendem Muster posten:

    $variable_fuer_link = "meine-variable";

    und

    erwuenschtes Ergebnis = <a href.....> ?

    Dieter

    1. Moin,

      hier ein Beispiel: $beitrag='weweww  http://www.dynamicoppa.de.vu werwererere';

      Nun soll rauskommen: $beitrag='weweww <a href="http://www.dynamicoppa.de.vu">http://www.dynamicoppa.de.vu</a> werwererere';

      Wie könnte man denn alle als Link erkennbaren Teile sofort umwandeln?
      Beispiel : $beitrag='sdfsdfsdfsdfd http://www.google.de dsfsdfsdfdsf';

      Wie könnte ich nun http://www.google.de in "<a href..." umwandeln?
      (ereg funktioniert nur, wenn der String genau http://www.google.de ist)

      Danke im Voraus
      LG Jakob

      --
      Homepage? Naja, noch im Aufbau... : http://www.aquariensite.de
      1. Hi,

        $beitrag soll die URL mit <...> natürlich enthalten (hatte eben nicht bedacht, dass es umgewandelt wird)

        LG Jakob

        --
        Homepage? Naja, noch im Aufbau... : http://www.aquariensite.de
      2. Hallo,

        um Verwirrung auszuschliessen, hab ich [ + ] mal kurzerhand durch { + } ersetzt:

        $beitrag='weweww  {link:http://www.dynamicoppa.de.vu} werwererere';

        Du suchst also nach '{link:' + irgendwas + '}'
        Der regulaere Ausdruck ist demnach: ^({link:).*}$ (hoffentlich stimmt der mal 100 pro...)
        Das Ergebnis packst du in eine Variable '$link', machst einen str_replace fuer '{link:' + '}', dann hast du den puren Link. Dann ist $beitrag='<a href="$link">$link</a>

        Noch ein Wort zu regulaeren Ausdruecken: Ich tu mich immer schwer, den passenden Ausdruck zu basteln, die Software Agent Ransack von http://www.agentransack.com ist nicht nur der Windows Suche haushoch ueberlegen sondern hat auch einen sehr netten RegExp-Wizard.

        Dieter

        1. Hi,
          ich danke dir...

          LG Jakob

          --
          Homepage? Naja, noch im Aufbau... : http://www.aquariensite.de
  2. Hallo Jakob,

    Deswegen stelle ich diese Frage erneut: Wie
    kann ich als Selfhtml-Links angebebene
    Bestandteile eines Strings in html-code
    umwandeln?

    Hier wird das so gemacht:

    # now transform all links...
      my @links = ();
      push @links,[$1, $2] while $txt =~ /[([Ll][Ii][Nn][Kk]):\s*([^]\s]+)\s*]/g;
      @links = grep {
        is_URL($_->[1] => qw(http ftp news nntp telnet gopher mailto))
          or is_URL(($_->[1] =~ /[1][Ii][Ee][Ww]-[Ss][Oo][Uu][Rr][Cc][Ee]:(.+)/)[0] || '' => 'http')
          or ($_->[1] =~ m<^(?:.?.?/(?!/)|?)> and is_URL(rel_uri($_ -> [1],$base) => 'http'))
        } @links;

    # replace links
      $txt =~ s!$_!<a href="$1">$1</a>!g for map {
        '[[Ll][Ii][Nn][Kk]:\s*('.quotemeta(plain($_->[1])).')]'
      } @links;

    Der Code ist eine leichte Abwandlung von André
    Malos Original-Code.

    Gruesse,
     CK


    1. Vv ↩︎