Ankündigung

Einklappen
Keine Ankündigung bisher.

Regulärer Ausdruck um Uri zu prüfen

Einklappen

Neue Werbung 2019

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

  • Regulärer Ausdruck um Uri zu prüfen

    Hallo,

    ich möchte in einer Uri nur bestimmte zeichen zulassen, alles andere soll ausgefiltert werden. Leider komme ich damit nicht überhaupt klar

    zugelassene Zeichen: a-z, 0-9, Bindestrichen und Unterzeichen (pl.)

    PHP-Code:
    $uri preg_replace("(.-'=?)"''$value); 
    kann mir jemand helfen?
    Ich lerne PHP und es macht mir Spass!

  • #2
    reguläre ausdrücke haben auch die möglichkeit nach "ist nicht" zu suche.
    Idee: alles was nicht zahl, buchstabe etc mit "" ersetzen
    Under Construktion

    Kommentar


    • #3
      Zitat von phpbeginner Beitrag anzeigen
      zugelassene Zeichen: a-z, 0-9, Bindestrichen und Unterzeichen (pl.)
      1.) welche URI besteht nur aus den von Dir genannten Zeichen? (Schrägstrich, Hexcodes, etc.)

      2.) Du musst mit preg_match() arbeiten, wenn Du nur validieren möchtest.
      meine PHP Scripte

      Kommentar


      • #4
        Das gleiche habe ich gerade heute auch programmiert.

        Versuch mal so etwas in der Art:
        PHP-Code:
                //german umlauts
                
        $uri str_replace(array("Ä","Ö","Ü","ä","ö","ü"), array("AE","OE","UE","ae","oe","ue"), $uri);

                
        //all unwanted characters are discarded

                
        $matches = array();
                
        preg_match_all("~[a-zA-Z0-9_+\./-]*~"$uri$matches);

                
        $uri '';
                foreach(
        $matches as $m$uri .= implode("",$m); 

        Kommentar


        • #5
          Wenn Du alles ersetzen willst, was Du nicht haben willst, dann musst Du einfach sowas machen:
          PHP-Code:
          $url preg_replace('#[^a-z0-9-]#'''$url); 
          Allerdings ist es unsinnig falsche Daten anzunehmen, sie zu filtern und dann zu erwarten, dass das Ergebnis korrekt ist. Sinnvoller wäre die vollständige Ablehnung und die Aufforderung die Daten korrekt zu übermitteln. Und das realisiert man eben mit preg_match().

          Bezugnehmen auf den oben genannten Pattern wäre das z.B.:
          PHP-Code:
          $url preg_replace('#[a-z0-9-]#'$url) ? $url '';
          if (!
          $url) exit 'Mach korrekte Angaben!'
          EDIT:
          Ok ihr wollt wohl SEO-URLs bauen, wenn ich das richtig verstehe, sorry ich dachte es geht um Nutzereingaben. Dann reicht wie gesagt die oben genannte preg_replace() Syntax, um alle ungewünschten Zeichen zu entfernen.
          meine PHP Scripte

          Kommentar

          Lädt...
          X