um ehrlich zu sein, ich es einfach halten würde und alarmieren nur den Benutzer, wenn sie eine ungültige Zeichenfolge eingegeben:
$type = $_GET['type'];
if (!preg_match('/^[a-z]{0,3}$/', $type)) {
// Handle error properly here.
die('Type argument must be a string of 0-3 lower case letters (a-z)');
}
wenn Sie wirklich die Eingabe korrigieren möchten, dann Ihre ursprüngliche solutio n war in Ordnung, es könnte nur ein wenig aufgeräumt werden:
$type = substr(preg_replace('/[^a-z]+/', '', strtolower($_GET['type'])), 0, 3);
Was wollen Sie tun? Es gibt übrigens keine "$ 2" in dieser Regex ... – Blixt
In einigen Regexen werden fehlende Referenzen nur als leer behandelt, sodass die $ 2 effektiv nur die Übereinstimmungen entfernen können. –
Ja, tut es, aber auch '' ''. – Blixt