Php 通过AJAX向用户报告经过消毒的用户输入

Php 通过AJAX向用户报告经过消毒的用户输入,php,ajax,json,sanitize,utf-8,Php,Ajax,Json,Sanitize,Utf 8,我正在编写一些代码,以便在使用AJAX验证表单时向用户提供实时反馈。我已经得到它检查长度和字段是否为空。现在我想让它清理用户输入,如果经过清理的输入与用户原始输入不同,那么告诉他们哪些字符是不允许的 到目前为止,我所写的代码除了一些字符(最明显的是“£”符号)外,都没有响应。我认为这与json_编码及其编码有关 代码如下: $user_input = 'asdfsfs£'; $strip_array = str_split(strip($user_input)); $orig_arr

我正在编写一些代码,以便在使用AJAX验证表单时向用户提供实时反馈。我已经得到它检查长度和字段是否为空。现在我想让它清理用户输入,如果经过清理的输入与用户原始输入不同,那么告诉他们哪些字符是不允许的

到目前为止,我所写的代码除了一些字符(最明显的是“£”符号)外,都没有响应。我认为这与json_编码及其编码有关

代码如下:

  $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);}

希望有人能想出一个解决方案。

如果这是通过AJAX实现的,那么您需要编写一个javascript函数来实现这一点

让服务器返回格式为的JSON对象

{
    original: 'asdfsfs£',
    edited: 'asdfsfs',
    illegalChars: ['£']
}
在html中,表单输入字段旁边应该有空元素,可以在其中输出表单验证消息

<input type="text" id="myTextField" />
<span id="myTextFieldLabel" />
现在,让javascript根据验证数据更新myTextFieldLabel组件的内容


Sean

如果这是通过AJAX实现的,那么您需要编写一个javascript函数来实现这一点

让服务器返回格式为的JSON对象

{
    original: 'asdfsfs£',
    edited: 'asdfsfs',
    illegalChars: ['£']
}
在html中,表单输入字段旁边应该有空元素,可以在其中输出表单验证消息

<input type="text" id="myTextField" />
<span id="myTextFieldLabel" />
现在,让javascript根据验证数据更新myTextFieldLabel组件的内容


Sean

我猜字符串中是否存在unicode字符。PHP不支持unicode,因此它会搞乱字符串->数组转换。还不确定问题到底出在哪里,也不知道如何解决。是的,我想这与此有关。。我注意到,在PHPED中,如果我调试它并查看字符串的内容,%前面总是有一个奇怪的类似“a”的字符。我猜字符串中可能存在unicode字符。PHP不支持unicode,因此它会搞乱字符串->数组转换。还不确定问题到底出在哪里,也不知道如何解决。是的,我想这与此有关。。我注意到,在PHPED中,如果我调试它并查看字符串的内容,%的前面总是有一个奇怪的类似“a”的字符。也许我没有说清楚,Ajax在验证中工作得很好。问题是我用于检查上面发布的非法字符的代码返回了>的正确结果,但对于“£”它什么也不返回。我相信这与文本编码在处理后不是UTF-8有关。也许我没有说清楚,Ajax在验证方面工作得很好。问题是我用于检查上面发布的非法字符的代码返回了>的正确结果,但对于“£”它什么也不返回。我相信这是因为文本编码在处理后不是UTF-8。