Ich habe eine Funktion, die Benutzereingaben bereinigt. Nachdem die clean-Eingabe zurückgegeben wurde, wird json_decode ($ var, true) durchlaufen; Derzeit erhalte ich einen Fehler bei einer fehlerhaften Zeichenfolge. Obwohl, wenn ich es ausdrucken und mit ihm http://jsonlint.com/ teste, passiert es. Ich habe erkannt, dass die Zeichenfolge nach den Bereinigungsvorgängen 149 Zeichen lang ist und davor ihre 85. Um das zu beheben, habe ich sie auch durch eine Regex laufen lassen, um Sonderzeichen zu entfernen, aber ich denke, das könnte das vorherige rückgängig machen Funktion hat. Funktioniert die Funktion "new" was filer_var macht? Ist dies der beste Weg, Eingaben zu reinigen? Unten ist mein Code:PHP JSON String fehlerhaft
#index.php
$cleanInput = cleanse->cleanInput($_POST);
#cleanse.php OLD
function cleanInput($input){
foreach($input as $key => $value){
$cleanInput[$key] = filter_var($value, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH));
}
return($cleanInput); //Returns 149char long string, visually 85chars
}
#cleanse.php NEW
function cleanInput($input){
foreach($input as $key => $value){
$cleanInput[$key] = preg_replace("[^+A-Za-z0-9]", "", filter_var($value, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH)));
}
return($cleanInput); //Returns 85char long string, visually 85chars
}
#outputs
#Before
{"name":"Pete Johnson","address":"123 main street","email":"[email protected]","password":"PA$$word"}
#After
{"name":"Pete Johnson","address":"123 main street","email":"[email protected]","password":"PA$$word"}
können wir den tatsächlichen Eingang bei jedem Schritt finden Sie? vor dem Reinigen und nach dem Linting? – mpen
Die Ausgabe wurde oben hinzugefügt. –
Was sind die ursprünglichen Post-Werte in Ihrem POST-Array ?. Nebenbei bemerkt haben Sie versucht, HTMLPurifier? http://htmlpurifier.org/ Das ist normalerweise was ich anstelle der eingebauten Filterfunktionen verwende. – Gohn67