【发布时间】:2011-02-20 10:27:18
【问题描述】:
我正在编写一些代码来向用户提供有关使用 AJAX 验证表单的实时反馈。我已经检查了长度以及该字段是否为空。现在我希望它清理用户输入,如果清理后的输入与用户的原始输入不同,那么告诉他们哪些字符是不允许的。
到目前为止,我编写的代码可以正常工作,但某些字符最明显的是“£”符号导致没有响应。我认为它与 json_encode 及其编码有关。
代码如下:
$user_input = 'asdfsfs£';
$strip_array = str_split(strip($user_input));
$orig_array = str_split($user_input);
$diff_array = array_diff($orig_array,$strip_array);
$diff_str = implode(', ',$diff_array);
$final = json_encode($diff_str);
function strip($input){return htmlentities(strip_tags($input),ENT_QUOTES);}
希望有人能找到解决办法。
【问题讨论】:
-
我的猜测是字符串中存在 unicode 字符。 PHP 不支持 unicode,因此它会弄乱字符串 -> 数组转换。还不确定问题到底出在哪里或如何解决。
-
是的,我认为它与此有关.. 我注意到在 PHPED 中,如果我调试它并查看字符串的内容,£ 总是前面有一个奇怪的类似“A”的字符.
标签: php ajax json sanitize utf-8