gpt4 book ai didi

PHP JSON 字符串格式错误

转载 作者:行者123 更新时间:2023-12-04 05:52:59 24 4
gpt4 key购买 nike

我有一个清除用户输入的功能。干净的输入返回后,经过 json_decode($var, true);目前,我收到格式错误的字符串错误。不过,如果我打印出来并用它进行测试 http://jsonlint.com/ ,它通过。我开始意识到清理过程后的字符串长 149 个字符,之前是 85 个字符。为了解决这个问题,我还通过正则表达式运行它以删除特殊字符,但我认为这可能会撤消之前的内容功能做到了。 "new"函数是否撤消了 filer_var 的作用?这是清理输入的最佳方法吗?下面是我的代码:

#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":"myemail@gmail.com","password":"PA$$word"}

#After
{"name":"Pete Johnson","address":"123 main street","email":"myemail@gmail.com","password":"PA$$word"}

最佳答案

对 filter_var($value, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH) 的函数调用创建如下输出:{"name":"Pete Johnson","address":"123 mainstreet","email":"myemail@gmail.com","password":"PA$$word"}
这就是 json_decode 不起作用的原因。

就像我在评论中所说的那样。最好的办法是最初在输入上使用 json_decode,然后使用 HTML_Purifier 和/或 Zend_Validator 遍历各个元素,或者编写自己的元素来处理各个字段。例如,电子邮件与密码的验证要求不同。

编辑:

我尝试运行新功能,但我无法让它工作。所以我做了一些调整来让它工作。虽然我不确定这是否是您想要的正则表达式。这是我从这段代码中得到的输出:

$input = '{"name":"Pete Johnson","address":"123 main street","email":"myemail@gmail.com","password":"PA$$word"}';
$cleanedInput = preg_replace("/[^+A-Za-z0-9]/", "", filter_var($input, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH));
echo $cleanedInput;

输出:
34name3434PeteJohnson3434address3434123mainstreet3434email3434myemailgmailcom3434password3434PAword34

关于PHP JSON 字符串格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com