kostenloser Webspace werbefrei: lima-city


Frage zu PHP Preg_Replace

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Hallo,

    ich habe eine Frage zur Funktion Preg_Replace, bei der ich nicht weiter komme.

    Das ist meine Codezeile:

    $dir = preg_replace('/[^a-zA-Z0-9_]/', '', htmlentities($_GET["dir"]));


    Ich möchte alle Groß-und Kleinbuchstaben, Zahlen, Unterstriche, Bindestriche und das Zeichen "/" erlauben.
    Wie passe ich meinen Code an?

    Danke schonmal für eure Hilfe!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. witze-dschungel

    witze-dschungel hat kostenlosen Webspace.

    davy schrieb:
    Ich möchte alle Groß-und Kleinbuchstaben, Zahlen, Unterstriche, Bindestriche und das Zeichen "/" erlauben.
    Wie passe ich meinen Code an?


    Habe den Regex etwas angepasst, dass er auch deiner Beschreibung entspricht:

    $dir = preg_replace('/[^a-zA-Z0-9_\/-]+/', '', htmlentities($_GET["dir"]));


    Durch das "+" sollte er auch bei mehreren Sonderzeichen funktionieren.
  4. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    witze-dschungel schrieb:
    davy schrieb:
    Ich möchte alle Groß-und Kleinbuchstaben, Zahlen, Unterstriche, Bindestriche und das Zeichen "/" erlauben.
    Wie passe ich meinen Code an?


    Habe den Regex etwas angepasst, dass er auch deiner Beschreibung entspricht:

    $dir = preg_replace('/[^a-zA-Z0-9_\/-]+/', '', htmlentities($_GET["dir"]));


    Durch das "+" sollte er auch bei mehreren Sonderzeichen funktionieren.


    Danke, funktioniert super. :thumb:

    Ich habe noch ein weiteres Problem:

    Der Code:

    $dir = preg_replace('/[^a-zA-Z0-9\\/_]/', '', htmlentities($_GET["dir"]));


    erstellt beispielsweise die Ausgabe

    Hauptverzeichnis/Unterverzeichnis1/Unterverzeichnis2

    Wie kann ich das letzte Verzeichnis (Unterverzeichnis2) löschen, sodass nur noch "Hauptverzeichnis/Unterverzeichnis1" übrig bleibt?
    Ich brauche diese Funktion, um einen Link zu erstellen, um einen Ordner zurück zu gehen.

    Geht sowas überhaupt in PHP? Oder wie könnte man sowas sonst realisieren?

    EDIT:

    Soweit bin ich schon

    strstr($dir,"/", TRUE);


    In $dir ist "Hauptverzeichnis/Unterverzeichnis1/Unterverzeichnis2" gespeichert. Problem ist, dass jedes "/" gelöscht wird. Ich möchte ja nur das letzte jeweils löschen. Kann man die Anzahl angeben?

    Beitrag zuletzt geändert: 25.5.2019 18:16:15 von davy
  5. h***********r

    Du suchst mit strrpos die Position des letzten Vorkommens und baust dir mit substr bis zu diesem deinen neuen String aus dem alten zusammen.

    Beitrag zuletzt geändert: 25.5.2019 18:42:31 von horstexplorer
  6. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Klappt wunderbar.
    Danke.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!