1

我正在尝试通过 url 传递数组。我尝试过对 URL 进行编码、对 URL 进行序列化、对 URL 进行序列化和编码,无论我做什么,字符串的长度都会出现在 url 中。

例如,如果我以这种方式通过 URL 传递数组:

<a href='http://splitsum.com/samples/your_store/checkout_form2.php?arr=<?PHP echo serialize($order); ?>'>Next Page</a>

生成的 URL 如下所示(打印出字符串计数):

.....s:15:%22shipping_method%22;s:20:%22Flat%20Rate%20(Best%20Way)%22;.....

有谁知道为什么会这样?我可以 var_dump 整个数组(并查看页面上的字符串计数),但我似乎无法在数组中打印单个值。它可能与 URL 中的问题和字符串长度的打印有关吗?

谢谢!

4

2 回答 2

3

因为你正在使用serialize(). 你应该urlencode()改用。

serialize 旨在获取内部任意数据结构,并将它们编码为可移植格式,以便在其他地方的 PHP 系统中重复使用。它不会生成保证在 URL 上下文中有效的代码。基本上你是用锤子敲打螺丝。请改用螺丝刀。

请注意,urlencode 不接受数组。或许http_build_query()会更合适

于 2013-06-27T15:56:04.317 回答
0

出现长度是因为您使用的是serialize. 它是如何输出的。它用于存储 PHP 变量,以便可以再次将其加载回 PHP。它的输出格式包含数组/字符串的长度。

这是这项工作的错误工具。你想在http_build_query这里使用。

<a href='http://splitsum.com/samples/your_store/checkout_form2.php?<?PHP echo http_build_query(array('arr' => $order)); ?>'>Next Page</a>

然后$_GET['arr']incheckout_form2.php将是您的$order数组。

于 2013-06-27T15:59:56.920 回答