我通过URL(键,值)发送逗号分隔值。我用Javascript的escape()编码它们,然后用%2c替换每个值中的逗号。问题是在PHP结束时,编码的逗号变成“,”爆炸发生之前发生,然后我的包含逗号的字符串被分解,并且它没有正确保存。
如何阻止PHP将我的编码位转换回未编码的位?
每个输入的我的JS是:
fieldData += $(this).attr("id")+","+escape($(this).html()).replace(/,/g,"%2c")+",";
我的PHP是:
$fieldData = explode(",", $_POST['fieldData']);
尝试(以及其他事情):
$fieldData = explode(",", urlencode($_POST['fieldData']));
答案 0 :(得分:1)
我建议使用base64encode / decode。
javascript看起来像这样:http://jsfiddle.net/Y6yuN/
<script src='http://javascriptbase64.googlecode.com/svn/trunk/base64.js'></script>
fieldData += $(this).attr("id")+","+escape(Base64.encode($(this).html()))+",";
转义是为了尾随=
因此,最终会使用逗号分隔的base64编码字符串。
在PHP方面:
$fieldData = explode(",", $_POST['fieldData']);
foreach ($fieldData as $k => $v){
$fieldData[$k] = base64_decode(urldecode($v));
}
答案 1 :(得分:0)
您的帖子并没有得到很好的解释,但我认为您想解码JS传递的数据。所以,代码应该是:
$fieldData = explode(",", urldecode($_POST['fieldData']));
如果我错了,请尝试写得更好!