Ich versuche, erlaubte Zeichen in einem Array zu definieren und dann Strings basierend auf diesem Array zu bereinigen. Der folgende Code funktioniert ziemlich gut, außer dass er auch die Zeichen 0-9 entfernt!PHP - Sanitize string entfernt Zahlen
Könnte jemand bitte erklären, warum das so ist?
Code:
<?php
//Allowed characters within user data:
$symbols = array();
$symbols += range('a', 'z');
$symbols += range('A', 'Z');
$symbols += range('0', '9');
array_push($symbols,' ','-'); // Allow spaces and hyphens.
//----test 1
//data to test.
$someString = "07mm04dd1776yyyy";
//sanatize
$someString = trim(preg_replace("/[^" . preg_quote(implode('',$symbols), '/') . "]/i", "", $someString));
echo "$someString\n";
//----test 2
$someString = "Another-07/04/[email protected]#$%^&*()[]\\;',./\"[]|;\"<>?";
//sanatize
$someString = trim(preg_replace("/[^" . preg_quote(implode('',$symbols), '/') . "]/i", "", $someString));
echo "$someString\n";
?>
Ausgang:
mmddyyyy
Another--test-
Nebenbei bemerkt (edit): Diese in Verbindung mit einer Datenbank verwendet wird, aber es geht über die DB werden die Daten in der DB genutzt Schreibe Powershell-Skripte, die Benutzer in Active Directory importieren, und viele Zeichen sind nicht erlaubt, und das alte System erlaubt nur diese Zeichen auch.
Danke im Voraus, Wayne
Nebenbei bemerkt: Hat das irgendetwas hat durch Zufall mit einer Datenbank zu tun? Wenn ja, brauchst du das alles nicht. Sie können eine vorbereitete Anweisung verwenden. –
Es tut, aber es geht über die DB, die Daten in der DB wird verwendet, um Powershell-Skripte zu schreiben, die Benutzer in Active Directory importieren, und viele Zeichen sind nicht erlaubt, und das alte System erlaubte nur diese Zeichen auch. –
Ok. Ich habe deinen Kommentar als Bearbeitung hinzugefügt, wenn es dir nichts ausmacht. Es könnte sich auf das Ergebnis möglicher Antworten auswirken. –