Regulärer Ausdruck für URL-Vervollständigung

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

  • Regulärer Ausdruck für URL-Vervollständigung

    Ich habe folgenden Code zusammengeschustert, um aus bbCode Links zu machen:
    Code:
    $result = preg_replace( "/\[URL=(.*?)\](.*?)\[\/URL\]/is",
       "<a href=\"$1\" target=\"_blank\">$2</a>", 
       $result);
    $result = preg_replace( "/\[URL\](.*?)\[\/URL\]/si",
       "<a href=\"$1\" target=\"_blank\">$1</a>",
       $result);
    Das klappt so schon recht gut, bis auf die Tatsache, das man immer http:// mit angeben muss.
    Ich denke die Problematik ist alt und bekannt.

    Mein Lösungsansatz sah so aus, das ich vor dem oben genannten folgendes eingefügt habe:
    Code:
    $result = preg_replace( "/\[URL=((?\<!http\:\/\/)(.*?))\](.*?)\[\/URL\]/is",
       "<a href=\"http://$1\" target=\"_blank\">$2</a>", 
       $result);
    $result = preg_replace( "/\[URL\]((?<!http\:\/\/)(.*?))\[\/URL\]/si",
       "<a href=\"$1\" target=\"_blank\">$1</a>",
       $result);
    Soweit meine Gedanken, alledings scheitert dieser Versuch, genauwie alle meine anderen Versuche, daran, das entweder die http:// doppelt angezeigt werden, wenns schon da war, oder garnet kommn.
    Daher bitte ich um eure Hilfe.
    Vielen Dank,
    Thorsten Lanfer

    /e: Das Forum frisst meine komplette Escaping-Klamüserei
    /e²: Genauso wie es auch die erste Zeile meines Lösungsansatzes frisst, man stelle sie sich analog zur zweiten vor
    EDIT:
    der Code Tag frisst nichts!
    Zuletzt geändert von ; 22.03.2005, 00:26.

  • #2
    LESEN: http://www.php-resource.de/forum/sho...threadid=50454

    Kommentar


    • #3
      na toll, beim editieren kann ich das [url] nicht abschalten !!!

      sorry tortus@work, das mußt du wohl machen
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        Original geschrieben von asp2php
        LESEN: http://www.php-resource.de/forum/sho...threadid=50454
        Was hab ich denn so extrem falsch gemacht, das ich hier gleich nen festgeklebtes Capslock an den Kopf bekomme?
        Ich habe mein Problem beschrieben.
        Mit mysql hat es nichts zu tun.
        PHP-Tag hab ich eingesetzt, aber die wollten nicht.
        Ich hab nur das relevanteste gepostet.
        Und ewig lange Zeilen sind auch nit dabei.

        Also seh ich beim besten willen nicht, was ich falsch gemacht hab

        Kommentar


        • #5
          Original geschrieben von tortus@work

          Also seh ich beim besten willen nicht, was ich falsch gemacht hab
          es war der Scrollbalken ... und ich geh' erstmal jetzt pennen

          Kommentar


          • #6
            http:// hinzufügen und dann im nächsten schritt zwei http entfernen?
            Code:
            $result = preg_replace( "/\[URL=\s*(.*?)\](.*?)\[\/URL\]/is",
               "<a href=\"http://$1\" target=\"_blank\">$2</a>",
               $result);
            $result = preg_replace( "/\[URL\]\s*(.*?)\[\/URL\]/si",
               "<a href=\"http://$1\" target=\"_blank\">$1</a>",
               $result);
            
            $result = str_replace('<a href="http://http://', '<a href="http://', $result);
            $result = str_replace('<a href="http://https://', '<a href="https://', $result);
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Die idee mit dem erst hinzufügen und dann entfernen hatte ich auch schon, bei mir scheiterte es allerdings an der ausführung
              Aber so funktionierts, danke.

              /e: @asp2php: Ok, das hab ich nicht gesehn, ich hab hier 1600x1200. Habs grad ma getestet, auf 1024x768 hat man aber verdammt wenig platz
              Zuletzt geändert von ; 22.03.2005, 11:22.

              Kommentar


              • #8
                Original geschrieben von tortus@work
                /e: @asp2php: Ok, das hab ich nicht gesehn, ich hab hier 1600x1200. Habs grad ma getestet, auf 1024x768 hat man aber verdammt wenig platz
                Also mir reicht der Platz locker, sofern niemand auf die Idee kommt die Anzahl/Zeile auf >500 in seinem Post zu setzen >_>

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar

                Lädt...
                X