tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
1262
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mr_brusthaar mr_brusthaar ist offline Grünschnabel
    Registriert seit
    Jun 2005
    Ort
    NB
    Beiträge
    4
    Hallo!

    Also... folgende Funktion tut ihren Dienst ganz gut:
    PHP-Code:
    $text preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<A TARGET=\"_blank\" HREF=\"$1\">$1</A>"$text); 
    (wandelt URLs aus einem String in anklickbare Links um)

    Aber: Ich habe im Text zum Beispiel auch schon Bilder drin, also Dinge wie <img src="http://www.domain.de/bild.jpg"> ... nun soll er natürlich diesen link NICHT umwandeln ... ich habe nun schon 2 Nächte damit verbracht, das Problem mit regulären Ausdrücken zu lösen, aber komme nicht weiter.

    Könnte man denn irgendwie angeben, dass, wenn ein = oder ein =" vor http steht, dass dann die umwandlung nicht geschieht?

    lieben Gruß
     

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    PHP-Code:
    function make_clickable($ret) {
    $ret ' ' $ret ' ';
    $ret preg_replace("#([\s\n>])(https?|ftp)://([^\s<>{}()]+[^\s.,<>{}()])#i""$1<a href='$2://$3' rel='nofollow'>$2://$3</a>"$ret);
    $ret preg_replace("#([\s\n>])(www|ftp)\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^ <>{}()\n\r]*[^., <>{}()\n\r]?)?)#i""$1<a href='http://$2.$3.$4$5' rel='nofollow'>$2.$3.$4$5</a>"$ret);
    $ret preg_replace("#([\s\n>])([a-z0-9\-_.]+)@([a-z0-9\-_.]+)\.([^,< \n\r]+)#i""$1<a href=\"mailto:$2@$3.$4\">$2@$3.$4</a>"$ret);
    $ret preg_replace("#(<a [^>]+?>)<a [^>]+?>([^>]+?)</a></a>#i""$1$2</a>"$ret);
    $ret trim($ret);
    return 
    $ret;

    Kommt so oder so ähnlich in WordPress vor.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    mr_brusthaar mr_brusthaar ist offline Grünschnabel
    Registriert seit
    Jun 2005
    Ort
    NB
    Beiträge
    4
    hmz verdammt, diese funktion hatte ich schon gesehen beim durchsuchen des forums, aber hab nicht gesehen, dass sie das kann was ich meine danke dir vielmals! klappt einwandfrei!
     

  4. #4
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Dann klick doch noch schnell auf "Erledigt" damit die anderen das auch sehen können.
    Danke.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  5. #5
    Avatar von deb_ugger
    deb_ugger deb_ugger ist offline Mitglied Gold
    Registriert seit
    May 2004
    Ort
    Graz
    Beiträge
    100
    Hi!

    Hab dein Script gefunden, und ich finds super! Ich arbeit jetzt schon länger an sowas, und das hilft mir echt weiter. Ich würde das Script gerne erweitern, indem ich ab einer bestimmten Zeichenlänge (z.B. 20 Zeichen) die URL automatisch gekürzt werden soll.

    Ich würde gerne innerhalb des preg_replace folgende Funktion aufrufen:
    PHP-Code:
    function trimLinks($url) {
        
    $shorturl $url;
        if(
    strlen($url)>20) {
            
    $shorturl substr($url020)."...";
        }
        return 
    $shorturl;

    Hat jemand eine Ahnung, ob das funktionieren kann?
    Ich hab das Problem, dass wenn ich die Funktion trimLinks() einfach so integriere...
    PHP-Code:
        $ret preg_replace("#([\s\n>])(www|ftp)\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^ <>{}()\n\r]*[^., <>{}()\n\r]?)?)#i""$1<a href='http://$2.$3.$4$5' rel='nofollow'>".trimLinks("$2.$3.$4$5")."</a>"$ret); 
    ... als Werte lediglich "$2.$3.$4$5" übergeben werden, und nicht die Url.

    Grüße,
    debugger
     

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    PHP-Code:
    $ret preg_replace('#([\s\n>])((?:www|ftp)\.[a-z0-9\-]+\.[a-z0-9\-.\~]+(?:/[^ <>{}()\n\r]*[^., <>{}()\n\r]?)?)#ei''"$1<a href=\"http://$2\" rel=\"nofollow\">".trimLinks("$2")."</a>"'$ret); 
     
    Markus Wulftange

  7. #7
    Avatar von deb_ugger
    deb_ugger deb_ugger ist offline Mitglied Gold
    Registriert seit
    May 2004
    Ort
    Graz
    Beiträge
    100
    Danke! Perfekt

    Hier alles zusammen:
    PHP-Code:
    function trimLinks($url) {
        
    $shorturl $url;
        if(
    strlen($url)>30) {
            
    $shorturl substr($url030)."...";
        }
        return 
    $shorturl;
    }

    function 
    make_clickable($ret) {
        
    $ret ' ' $ret ' ';
        
    $ret preg_replace('#([\s\n>])(https?|ftp)://([^\s<>{}()]+[^\s.,<>{}()])#ei''"$1<a href=\"$2://$3\" rel=\"nofollow\">".trimLinks("$2://$3")."</a>"'$ret);
        
    $ret preg_replace('#([\s\n>])(www|ftp)\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^ <>{}()\n\r]*[^., <>{}()\n\r]?)?)#ei''"$1<a href=\"http://$2.$3.$4$5\" rel=\"nofollow\">".trimLinks("$2.$3.$4$5")."</a>"'$ret);
        
    $ret preg_replace("#([\s\n>])([a-z0-9\-_.]+)@([a-z0-9\-_.]+)\.([^,< \n\r]+)#i""$1<a href=\"mailto:$2@$3.$4\">$2@$3.$4</a>"$ret);
        
    $ret preg_replace("#(<a [^>]+?>)<a [^>]+?>([^>]+?)</a></a>#i""$1$2</a>"$ret);
        
    $ret trim($ret);
        return 
    $ret;
    }

    echo 
    make_clickable("Bisschen Text http://www.heise.de/newsticker/foren/S-Wem-ist-auch-aufgefallen/forum-135972/msg-14775905/read/<br /> dazwischen wieder ein weiterer text eine.email@domain.com und noch wein wenig Text"); 
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 06.09.06, 18:02
  2. URLs durch HTML-Links ersetzen
    Von cameeel im Forum PHP
    Antworten: 8
    Letzter Beitrag: 06.07.06, 12:29
  3. Antworten: 6
    Letzter Beitrag: 17.06.06, 10:38
  4. Antworten: 5
    Letzter Beitrag: 09.09.03, 12:21
  5. Antworten: 4
    Letzter Beitrag: 06.08.02, 13:05