Automatische URL-Verlinkung kürzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Automatische URL-Verlinkung kürzen

    Nichtssagender Thementitel, aber ... mir fällt da nie etwas Vernünftiges ein.

    Jedenfalls geht es um Folgendes Problem:

    Ein User gibt einen Text ein, dieser wird durch X Funktionen geschickt blah blah.
    Eine dieser Funktionen wandelt nun URLs, E-Mail-Adressen etc. in klickbare Links um. Später wird der Text umgebrochen, damit mir niemand mit endlosen Textzeilen das Forum in die Breite dehnt. Alles, das nicht innerhalb eines HTML-Tags steht, wird umgebrochen. Somit auch die Link-Beschreibungen, z.B. <a href="baaaaaaaaaa">blaa aaaa aaaa</a>.

    Wie ihr aber sicher wisst, gibt es manchmal uuunendlich lange URLs, die mit Parametern gespickt sind, die keinen Menschen interessieren. Es macht also wenig Sinn, solch eine URL komplett anzuzeigen.

    Darum würde ich sie gerne "kürzen". Also z.B.:

    http://www.blah.de?a=laskl&asdf=sdf&...sd&sdfsd=sdfds
    wird zu
    <a href="http://www.blah.de?a=laskl&asdf=sdf&sdff=adfsd&sdfsd=sdfds">[COLOR=red]http://www.blah.de?a=lask ...[/COLOR]</a>

    Momentan sieht die Umwandlung der URLs so aus:

    PHP-Code:
    $text eregi_replace("((ht|f)tp://www\.|www\.)([a-z0-9-]+(\.[a-z0-9-]+)*
                                      (\.[a-z]{2,3})((/|\?)[a-z0-9~#%&\\/'_\+=:\?\.-]*)*)"
    ,
                                      
    "http://www.\\3"$text);

    $text eregi_replace("((ht|f)tp://)((([a-z0-9-]+(\.[a-z0-9-]+)*
                                      (\.[a-z]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)
                                      [a-z0-9~#%&'_\+=:\?\.-]*)*)"

                                      
    "<a class=\"bA\" href=\"\\0\" target=\"\_blank\">\\0</a> "$text); 
    Wie kriege ich es nun hin, den angezeigten Text der URL eines Links zu kürzen? substr innerhalb des RegEx funktioniert nicht (leider, das wäre so schön einfach gewesen

    Kann mir jemand helfen?

    Gruß,

    DasD

    P.S.: Mir ist durchaus klar, dass ich anstatt der URL selbst einen beliebigen Text, z.B. "Link" darstellen könnte, z.B. <a href="blah.de">Link</a>, aber das möchte ich wiederum auch nicht, da der Leser eines Postings noch vor dem Klicken eindeutig wissen soll, was ihn ungefähr erwarten könnte.
    Zuletzt geändert von DasD; 11.02.2004, 18:14.

  • #2
    das Thema hatten wir schon!

    Kommentar


    • #3
      Jup, das Thema gabs hier schon, ich weiß. Aber es hilft mir leider nicht weiter, bzw. ich bin zu dumm, um die dortige Lösung bei mir einbinden zu können.

      Du meinst das hier, ja? http://www.php-resource.de/forum/sho...t=url+k%FCrzen

      Nun, ich habe die Funktion [COLOR=red]urlcut[/COLOR] übernommen und sie folgendermaßen eingebunden:

      PHP-Code:
      $text eregi_replace("((ht|f)tp://)((([a-z0-9-]+(\\.[a-z0-9-]+)*
                  (\\.[a-z]{2,3}))|(([0-9]{1,3}\\.){3}([0-9]{1,3})))
                  ((/|\\?)[a-z0-9~#%&'_\\+=:\\?\\.-]*)*)"
      ,
                  
      urlcut("\\\\0"), $text); 
      Das führte dazu, dass die URL, wie auch ursprünglich ohne der cuturl-Funktion, ungekürzt ausgegeben wurde.

      (Alles andere gab bei mir nur urlcut(\\0) oder urlcut("dieurlhalt") aus. (Ebenso mit $0.)

      Ich blicke bei regulären Ausdrücken kaum durch. Und darum habe ich mich eben foller Hoffnung an dieses Forum gewandt ...

      Danke fürs Zuhören :-p

      DasD

      Kommentar


      • #4
        gut,

        wenn du statt urlcut("\\0") mal "hallo" benutzt, was passiert dann?

        Kommentar

        Lädt...
        X