0

我通过 URL(键,值)发送逗号分隔的值。我用 Javascript 的 escape() 对它们进行编码,然后用 %2c 替换每个值中的逗号。问题是在 PHP 结束时,编码的逗号在发生 explode() 之前变成了“,”,然后我的包含逗号的字符串被分解了,它不能正确保存。

如何阻止 PHP 将我的编码位转换回未编码位?

我的每个输入的 JS 是:

fieldData += $(this).attr("id")+","+escape($(this).html()).replace(/,/g,"%2c")+",";

我的PHP是:

$fieldData = explode(",", $_POST['fieldData']);

尝试过(连同其他东西):

$fieldData = explode(",", urlencode($_POST['fieldData']));
4

2 回答 2

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));
}
于 2013-01-30T17:32:23.470 回答
0

您的帖子没有很好地解释,但我认为您想解码 JS 传递的数据。所以,代码应该是:

$fieldData = explode(",", urldecode($_POST['fieldData']));

如果我错了,试着写得更好!

于 2013-01-30T16:46:06.257 回答