Ankündigung

Einklappen
Keine Ankündigung bisher.

Links automatisch erstellen

Einklappen

Neue Werbung 2019

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

  • themonk
    hat ein Thema erstellt Links automatisch erstellen.

    Links automatisch erstellen

    Hallo,
    ich wollte geren wissen wie man mit php automatisch Hyperlinks erstellen kann.
    Also ich habe vor, dass wenn jemand in ein Gästebuch www.google.de, http:// www.google.de oder google.de oder z.B. http://www.google.de/search?hl=de&sa...nG=Suche&meta=


    eingibt immer ein Link erstellt wird so wie hier im Forum
    Könnt ihr mir da weiter helfen?

  • themonk
    antwortet
    Habs nun mit dem Code von Slava gemacht der reicht wohl doch aus
    Danke

    Einen Kommentar schreiben:


  • Slava
    antwortet
    Zitat von bölckstoff
    Mit (ftp|http|https|www) wird dann ja auch www ersetzt.
    Aber das & habe ich doch aufgelistet also müsste es doch eigendlich funktionieren oder nicht?
    es wird zwar 'www' ersetzt aber leider ohne 'http' prefix.
    <a href="www....." ist kein richtiger link
    du muss nicht wirklich ein url auf seine richtigkeit prüffen, also finde ich mein fegex schon ausreichend (ok ftp muss auch rein).
    wenn du unbedingt url so wie im rfc haben willst (was du eigentlich nicht brauchst) , dann viel spass
    http://forum.de.selfhtml.org/archiv/...43180/#m236293

    Einen Kommentar schreiben:


  • Igäl
    antwortet
    kannst das ja sonst vielleicht auch in mehreren Schritten erledigen:

    PHP-Code:
                #Muster für URL erfassen
                
    $exp[] = "#\[url\]([\w]+?://[^ \"\n\r\t<]*?)\[/url\]#is";
                
    $rep[] = "<a href=\"$1\" target=\"_blank\" class=\"nlink\">$1</a>";

                
    $exp[] = "#\[url\]([^ \"\n\r\t<]*?)\[/url\]#is";
                
    $rep[] = "<a href=\"http://$1\" target=\"_blank\" class=\"nlink\">$1</a>";

                
    $exp[] = "#\[url\]((www|ftp)\.[^ \"\n\r\t<]*?)\[/url\]#is";
                
    $rep[] = "<a href=\"http://$1\" target=\"_blank\" class=\"nlink\">$1</a>";

                
    $exp[] = "#\[url=([\w]+?://[^ \"\n\r\t<]*?)\]([^?].*?)\[/url\]#i";
                
    $rep[] = "<a href=\"$1\" target=\"_blank\" class=\"nlink\">$2</a>";

                
    $exp[] = "#\[url=((www|ftp)\.[^ \"\n\r\t<]*?)\]([^?].*?)\[/url\]#i";
                
    $rep[] = "<a href=\"http://$1\" target=\"_blank\" class=\"nlink\">\\3</a>";

                
    #URL einfügen
                
    $text preg_replace($exp$rep$text);

                
    $text preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is""$1<a href=\"http://$2\" target=\"_blank\" class=\"nlink\">$2</a>"$text);

                
    $text preg_replace("#(^|[\r\n])([\w]+?://[^ \"\n\r\t<]*)#is""$1<a href=\"$2\" target=\"_blank\" class=\"nlink\">$2</a>"$text); 
    so hab ichs zurzeit. Allerdings noch nicht alles abgedeckt... aber zum verfeinern der Scripte bin ich noch nicht gekommen.

    Erinnert stark an die Art wie es phpBB macht ^^ das kommt daher, dass ich mir da damals die denkanstösse geholt habe

    Einen Kommentar schreiben:


  • themonk
    antwortet
    Mit (ftp|http|https|www) wird dann ja auch www ersetzt.
    Aber das & habe ich doch aufgelistet also müsste es doch eigendlich funktionieren oder nicht?

    Einen Kommentar schreiben:


  • Slava
    antwortet
    es geibt mehrere zeichen, die du nicht aufgelistet hast.
    ausserdem wird ein link einfach mit www nich ersetzt.

    Einen Kommentar schreiben:


  • themonk
    antwortet
    Habs so gemacht
    PHP-Code:
          $s_patter[]='"(( |^)((ftp|http|https){1}://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)"i';
      
    $r_patter[]='[url="\1"]\\1[/url]'
    Aber sobald ein & im Link ist wird der Link bis zum & weitergeführt danach kommt dann ein normaler Text und ein ;
    http://www.google.de?test&;php beibei ;php nicht mehr zum Link gehört

    Einen Kommentar schreiben:


  • Slava
    antwortet
    grob würde es etwa so aussehen:
    Code:
    $pt="#\s((www\.|https*://)\S++)#";
    function callb($erg){
      return ' '.$erg[1].'';
    }
    echo preg_replace_callback($pt,'callb',$text);

    Einen Kommentar schreiben:


  • Slava
    antwortet
    dann muss du dich mit regex auseinander zu setzten oder zbs bei phpBB die passende stelle in queltext zu finden.

    Einen Kommentar schreiben:

Lädt...
X