PHP-post数据在'&';在数据中

PHP-post数据在'&';在数据中,php,http-post,Php,Http Post,我在后端使用jquery/ajax和PHP发布数据。问题是,当我输入诸如“Jack&Jill上了山”之类的内容时,我只会在它到达后端时收到“Jack” 在发送数据之前,我在前端抛出了一个错误,警告“Jack&Jill上山了” 当我把die(print\u r($\u POST))在我的索引页面的最顶端,我只得到了[key]=>Jack 我怎么会丢失数据 我想这可能是我的过滤器 <?php function filter( $data ) { $data = trim( htmle

我在后端使用jquery/ajax和PHP发布数据。问题是,当我输入诸如“Jack&Jill上了山”之类的内容时,我只会在它到达后端时收到“Jack”

在发送数据之前,我在前端抛出了一个错误,警告“Jack&Jill上山了”

当我把
die(print\u r($\u POST))
在我的索引页面的最顶端,我只得到了
[key]=>Jack

我怎么会丢失数据

我想这可能是我的过滤器

<?php

function filter( $data ) {
    $data = trim( htmlentities( strip_tags( mb_convert_encoding( $data, 'HTML-ENTITIES', "UTF-8") ) ) ); 
    if ( get_magic_quotes_gpc() ) { 
        $data = stripslashes( $data ); 
    } 
    //$data = mysql_real_escape_string( $data ); 
    return $data;
}

echo "<xmp>" . filter("you & me") . "</xmp>";

?>

但是在上面的
you&me
测试中,它返回的结果很好,在我添加
die(print_r($\u POST))之后,它就就位了

谁能想到这是怎么发生的,为什么发生的


非常感谢您的帮助

在javascript端使用encode()或escape()

您很可能无法对数据进行URL编码。
&
字符分隔提交表单数据中的键值对


用于此

POST数据通过HTTP头以与url中的GET数据类似的形式发送。例如,数据可能看起来像
var1=value1&var2=value2&var3=value3
。正如您可以想象的,如果数据本身包含符号,那么它在该格式上就不会工作得太好。准确地说,问题在于如何提交数据


要在post数据(或URL)中使用符号,它们必须是“URLCoded”,这意味着您必须对
&
字符使用
%26
。因此,问题并不在于PHP,而是在于发送数据的任何东西。它没有正确编码值。

在Javascript端,您应该使用
escape()


在PHP端,函数名为
urlencode()

escape()是url转义特殊字符的正确函数。不,不是。对于非ASCII字符,它无法正常工作,已被弃用。谢谢你们两位,仍在学习javascript/jquery,非常感谢