Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_match matcht URL net

Einklappen

Neue Werbung 2019

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

  • preg_match matcht URL net

    Eigentlich möchte ich eine URL auf bestimmte Zeichen überprüfen lassen, die garantiert nicht in einer URL vorkommen können. Auf die Art will ich testen, ob eine ungültige URL eingegeben wurde.

    Jetzt das Problem: preg_match findet in der URL Zeichen, die gar nicht vorhanden sind. Ich habe mir die URL ausgeben lassen, aber die gefundenen Zeichen kommen tatsächlich nicht darin vor.

    Hier mein Quellkot/(-code):

    PHP-Code:
    <?php
          
    if (preg_match("/(\||\ |;|\$|\)|\()/U"$URL$Treffer_URL)) {
            
    $URL "http://www.testurl.net";
          }
    ?>
    Das selbe habe ich auch mit strpos versucht, allerdings habe ich da das selbe Problem:

    PHP-Code:
    <?php
          $UNGUELTIGE_ZEICHEN 
    = array ("$"";""|"" ""("")");
          for (
    $x=0;$x<=count($UNGUELTIGE_ZEICHEN)-1;$x++) {
            if (
    strpos($URL$UNGUELTIGE_ZEICHEN[$x]) === true) {
              
    $URL_UNGUELIG 1;
            }
          }
    ?>
    Habe ich einen Logikfehler in meinem Skript? Oder passt irgendwas anderes nicht?


  • #2
    dein preg_match sieht eigenartig aus ...

    wieso definierst du $url erst in der klammer? was steht wirklich in $url? was steht anschließend (bei erfolg) im dritten parameter?

    Kommentar


    • #3
      1. Ich definiere $URL nicht erst in der Klammer. Der Sinn ist, wenn die URL ein ungültiges Zeichen enthält, soll sie durch eine andere, gültige ersetzt werden.
      2. In $URL steht eine beliebige URL. Ich habe es mit mehreren gültigen URLs versucht und in allen findet er eines der Zeichen |, " ", ; , $, ) oder (. (siehe oberer preg_match-Term)
      3. Wenn er ein ungültiges Zeichen in der URL findet, dann sagt er mir, dass das erste Zeichen aus der Reihe der ungültigen Zeichen, gefunden wurde. Unabhängig davon, welches der Zeichen am Anfang der Reihe steht.

      Kommentar


      • #4
        PHP-Code:
        <?php
              
        if (preg_match('/(\||\ |;|\$|\)|\()/U'$URL$Treffer_URL)) {
                echo 
        "http://www.testurl.net";
              }
        ?>

        Kommentar


        • #5
          Google

          Kommentar


          • #6
            Zitat von Zergling
            Google
            Ja!?

            Kommentar


            • #7
              Er soll sich den regulären Ausdruck suchen über Google suchen, oder was verstehst du nicht?

              Denn sein Lösungsansatz ist schon, naja nicht falsch, aber nicht eindeutig.
              Denn ich kann zwar sagen, ein String stellt keine URL da, weil ungültige Zeichen darin enthalten sind. Umgekehrt kann ich aber nicht sagen, es kommen keine ungültigen Zeichen darin vor, deshalb ist der String eine URL.
              In "hallo" kommen ja auch keine ungültigen URL-Zeichen vor, trotzdem ist es keine URL.
              Das ist eben eine falsche Folgerung.

              Deshalb meinte ich: Google.

              Kommentar


              • #8
                Zitat von Zergling
                Umgekehrt kann ich aber nicht sagen, es kommen keine ungültigen Zeichen darin vor, deshalb ist der String eine URL.
                Da hast Du ja weiter gedacht als sein eigentliches Problem... :wink:

                Kommentar


                • #9

                  @Zergling: Ich will nicht überprüfen, ob der String eine URL ist, sondern ob der String Zeichen enthält, über die man zum Beispiel JavaScript-Code einschleußen könnte. Das ist der Sinn.

                  Das Problem ist aber, warum preg_match (edit: und auch strpos) Zeichen finden, die gar nicht im String vorkommen.

                  Kommentar


                  • #10
                    Ne, das eigentlich Problem ist ja gerade: wie erkenn ich eine URL :wink:

                    Kommentar


                    • #11
                      Irgendwie existiert in deinem Beispiel die Variable $URL noch gar nicht wenn du die �berpr�fst.

                      Und sonst ist auch irgendwie alles falsch...

                      Schau dir doch erst mal an wie man das ungefair macht:

                      http://de3.php.net/manual/de/function.preg-match.php

                      Kommentar


                      • #12
                        @Zergling: Bitte, streitet euch doch nicht in meinem Thread über URLs. Mir ist durchaus bewusst, dass man über Google Skripte findet, mit denen man eindeutig eine URL von einer "Nicht-URL" unterscheiden kann.
                        Aber bitte bleibt beim Thema und helft mir mal mit meinem kleinen Problemchen, für das ich keine Lösung finde.

                        @Shade: Hoppla. Dein Post hat sich eingeschlichen. ^^
                        Also, die Variable URL existiert schon. Sie wird vor dem Beispiels-Quellcode definiert und enthält eine gültige URL. Aber was meinst du mit "auch sonst ist alles falsch"?

                        Kommentar


                        • #13
                          Hm naja also was willst du denn genau erreichen? Also wenn z.B. eine übereinstimmung erreicht wurde was soll dann passieren?

                          Bei deinem bsp. wird dann der Variable $url ein neuer Wert übermittelt. Daweil ist das doch die die du überprüfst...

                          Kommentar


                          • #14
                            Ja, noch mal die Funktion meines kleinen Beispielquellcodes:

                            Ein Benutzer gibt eine URL ein, die anschließend in der Variablen $URL gespeichert sein soll. $URL wird anschließend auf einige Zeichen (Leerzeichen, Klammern, usw.) überprüft, um zu verhindern, dass der Benutzer JavaScript-Code miteingeschleußt hat. Findet preg_match tatsächlich eins dieser Zeichen, soll die Variable $URL den Wert einer "gültigen", ungefährlichen URL erhalten.

                            Kommentar


                            • #15
                              Zitat von Jacks Rache
                              @Zergling: Bitte, streitet euch doch nicht in meinem Thread über URLs. Mir ist durchaus bewusst, dass man über Google Skripte findet, mit denen man eindeutig eine URL von einer "Nicht-URL" unterscheiden kann.
                              Aber bitte bleibt beim Thema und helft mir mal mit meinem kleinen Problemchen, für das ich keine Lösung finde.
                              Habe das ehrlich gesagt nicht als Streit aufgefasst. Wenn du verhindern willst, dass jemand in ein URL-Feld JavaScript-Code eingibt, dann mach doch einfach strip_tags()?

                              Kommentar

                              Lädt...
                              X