Feste URL parsen

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

  • #46
    Code:
    !(href=[' . preg_quote("\"'") . ']' . preg_quote($url) . '[^\s]*[' . preg_quote("\"'") . '])!i

    Kommentar


    • #47
      hätte es ["\\'] nicht auch schon getan?
      und jetzt zum problemfall:
      Code:
      <a href="foo'bar">...
      die lösung findest du unter http://regexp-evaluator.de/tutorial/backreferences/

      Kommentar


      • #48
        Original geschrieben von penizillin
        hätte es ["\\'] nicht auch schon getan?
        Mh.. Na gut, stimmt.

        Deine o.g. Lösung schließt aber keine http-URLs aus. D.h. sie würde doch alles finden, was nicht nied- und nagelfest ist? Ich suche ja auch keine einfachen Wörter. Das hätte ich nämlich auch noch hinbekommen .
        Zuletzt geändert von frederic; 15.08.2007, 13:29.

        Kommentar


        • #49
          Code:
          <a href="http://example.com?param='incorrect'">

          Kommentar


          • #50
            Das hilft mir ja nichts. In dem durchsuchten Text kann http://www.test.de vorkommen, es kann http://www.spiegel.de/politik/xy.html, oder auch nur download.zip vorkommen. Ich möchte aber nur die download.zip. Das Problem ist, dass ich ein unvorhersehbares Szenario habe. Deshalb habe ich auch darauf angespielt, nur Inhalte zu parsen, die innerhalb eines href-Tages ohne http://, https://, ftp:// und was weiß ich nicht alles beginnen. Vllt. genügt es ja, nur Adressen zu parsen, in denen kein "://" vorkommt?

            Kommentar


            • #51
              ich verstehe das problem nicht. verstehst du denn die problematik am oberen beispiel?

              Kommentar


              • #52
                Okay, grundsätzlich:
                Ich arbeite an einem Plug-In für ein Skript, das vorhandene, interne (!) Links auf ihre Gültigkeit überprüft. Da der Editor alle internen URLs verkürzt (relative URL), wird aus einem internen Link "http://www.meineseite.de/beispielseite.html" ein "beispielseite.html". Ich kann deshalb leider interne Links nicht am "http://www.meineseite.de" erkennen, was inzwischen funktionieren würde (und in einem anderen Szenario auch benutzt wird). Deshalb habe ich innerhalb des geparsten Textes statt ein:
                Code:
                <a href="http://www.meineseite.de/beispielseite.html">Link</a>
                leider nur noch ein:
                Code:
                <a href="beispielseite.html">Link</a>
                Trotz alledem möchte ich gerne die internen Links überprüfen.

                Deshalb habe ich mir gedacht, ich komme an diese internen Links, indem ich einen Regexp aufstelle, der besagt: Es werden lediglich Links geparst, die innerhalb eines "href"-Tages ohne "://" beginnen. Begründung: "://" kommt sowohl in "http", "https", "ftp" als auch in vielen anderen URLs vor, sodass damit quasi alles abgedeckt wäre. Ggf. ist es noch notwendig, auch "www" zu beachten.

                Soweit meine Theorie, soweit alles, was dbzgl. in meinem Kopf herrscht. In der Praxis jedoch versage ich ...

                Kommentar


                • #53
                  das ist klar. der ausdruck dafür ist auch nicht kompliziert. verstehe nur nicht, was für ein zusammenhang zu den letzten 4 seiten des threads besteht.

                  Kommentar


                  • #54
                    Original geschrieben von penizillin
                    das ist klar
                    Gut!
                    der ausdruck dafür ist auch nicht kompliziert.
                    In Wörtern?
                    verstehe nur nicht, was für ein zusammenhang zu den letzten 4 seiten des threads besteht. [/B]
                    Direkt - keiner. Indirekt schon, weil es das gleiche Skript ist, lediglich ein anderer "Modus", eine URL zu parsen. Vllt. mache ich es mir auch zu kompliziert, aber das hier zu klären, ginge zu weiter.

                    Kommentar


                    • #55
                      na dann zeig mal deinen versuch "alle strings nach einem vorkommen von href= ohne ://" zu treffen.

                      Kommentar


                      • #56
                        PHP-Code:
                        <?php
                        if(!preg_match_all('!(href=["\\'][:\\/\\/](.*)["\\'])!i', $value$matches)) {
                        // ...
                        }
                        ?>
                        Zuletzt geändert von frederic; 15.08.2007, 14:16.

                        Kommentar


                        • #57
                          schlecht geraten. übrigens, es ist immer noch sinnvoll, in diesem forum reguläre ausdrücke ohne php oder code tags zu posten.

                          wo ist \s hin? wenn du schon sagst "eine url enthält keine whitespaces", wie kann man den ausdruck um "://" erweitern?

                          Kommentar


                          • #58
                            Ja, ne, ich wollte dir das gesamte preg_match_all() demonstrieren .
                            !(href=["\'][:\/\/][^\s]*["\'])!i
                            Wenn du schon sagst: "eine URL enthält keine Whitespaces" - wie kann man den Ausdruck um "://" erweitern?
                            Gute Frage ...

                            Kommentar


                            • #59
                              wie würdest du vorgehen, um etwa alle ziffern (\d) zusätzlich zu den whitespaces auszuschließen?

                              Kommentar


                              • #60
                                !(href=["'][:\/\/][0-9][^\s]*["'])!i
                                Aber ich sehe schon: Bin auf dem Holzweg.

                                Kommentar

                                Lädt...
                                X