www. ersetzen durch http://www. ...

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

  • www. ersetzen durch http://www. ...

    Ich habe folgenden Code um URls klickbar zu machen. Nach gestriger Hilfe, klappt es wunderbar. Jetzt habe ich aber noch eine Möglichkeit, die ich nutzen möchte. Wenn in einem Text die Protokollangabe http:// fehlt möchte ich diese im Fall der Angabe www.webseite.de anfügen lassen. Dies sollte natürlich nicht in dem Fall http://www.webseite.de passieren, dass dann http://http://www.webseite.de entsteht. Ich komme beim Erstellen des Pattern nicht klar.
    1. Wie kann ich das umsetzen?
    2. Gibt es ein gutes Tutorial für Reguläre Ausdrücke? Hier habe ich schon einiges gefunden, aber ich komme damit noch nicht so richtig klar.
    Code:
     //URls erkennen und clickbar machen / URls kuerzen
     function make_clickable($str) {
         global $mumConf;
    
      $pattern = '#(^|[^\"=]{1})(http://|https://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#m';
      $str = preg_replace($pattern,"\\1<a href=\"\\2\\3\"
      target=\"_blank\"> ".'\\2\\3'." </a><a href=\"\\2\\3\"
      target=\"_blank\"> ".$mumConf['marker_link_Pkt'].$mumConf['marker_link']." </a>\\4",$str);
      $pattern = $pattern.'e';
      return preg_replace($pattern,"substr('\\0',0,30)",$str);
    
     }

  • #2
    Du kannst natürlich nach pattern wie www. suchen, allerdings greifst Du damit nur die subdomain www ab. eine adresse wie test.php-resource.de ist aber auch eine url, die Du gerne finden möchtest. oder php-resource.de evt. auch
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Code:
       //URls erkennen und clickbar machen / URls kuerzen
       function make_clickable($str) {
           global $mumConf;
           
        //fehlende Protokollangabe bei www.XXX.xx ersetzen   
        $pattern = '#((?<!http://)www.)#m';
        $str = preg_replace($pattern,"http://\\1",$str);   
      
        $pattern = '#(^|[^\"=]{1})(http://|https://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#m';
        $str = preg_replace($pattern,"\\1<a href=\"\\2\\3\"
        target=\"_blank\"> ".'\\2\\3'." </a><a href=\"\\2\\3\"
        target=\"_blank\"> ".$mumConf['marker_link_Pkt'].$mumConf['marker_link']." </a>\\4",$str);
        $pattern = $pattern.'e';
        return preg_replace($pattern,"substr('\\0',0,30)",$str);
      
       }
      Ich habe das Ganze erst einmal so gelöst. Viele geben eine Domain mit www-beginnend ohne http:// an. Das klappt jetzt und ist hoffentlich so sauber gelöst. Bei Subdomains wie o.a. schreiben die meisten http:// davor. Du hast recht, dass diese dann nicht als Domain erkannt werden und dann auch nicht klickbar sind.

      Ist hier im Forum scheinbar auch derartig gelöst worden. www. wird in Deinem Beitrag als URl erkannt - die anderen Subdomains wie test.webseite.de aber nicht.
      Zuletzt geändert von Daniel1975; 07.11.2008, 09:04.

      Kommentar


      • #4
        wie wärs wenn du nach dem ersten punkt suchst?
        hmm... keine Ahnung obs möglich ist.. sollte aber eigentlich...
        denn egal ob subdomain wie bla.irgendwas.de oder www.irgendwas.de ist der erste punkt immer an der gleichen stelle quasi
        Pierre Voit ( Freelancer seit 2004 )

        Kommentar


        • #5
          Und welche Stelle wäre das (RegExp dafür) und wo ist diese Stelle bei example.com?

          Kommentar


          • #6
            hmm joa hast recht aber wer adressen in beispiel.de eingibt ist selbst dran schuld ^^
            Pierre Voit ( Freelancer seit 2004 )

            Kommentar

            Lädt...
            X