Frage zu PHP Preg_Replace
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
-
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! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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. -
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.
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 -
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 -
Klappt wunderbar.
Danke. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage