首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么字符串长度会出现在URL中?

为什么字符串长度会出现在URL中?
EN

Stack Overflow用户
提问于 2013-06-27 15:53:29
回答 2查看 58关注 0票数 1

我正试图通过url传递一个数组。我尝试过编码url、序列化url、序列化和编码URL,不管我做什么,都会在url中显示字符串的长度。

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

代码语言:javascript
复制
<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和字符串长度的打印问题有关?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-27 15:59:56

长度之所以出现是因为您使用的是serialize。这就是它的输出方式。它用于存储PHP变量,以便将其重新加载到PHP中。它的输出格式包含数组/字符串的长度。

这是这份工作的错误工具。您想在这里使用http_build_query

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

那么$_GET['arr'] in checkout_form2.php将是您的$order数组。

票数 0
EN

Stack Overflow用户

发布于 2013-06-27 15:56:04

因为你在使用serialize()。您应该使用urlencode()代替。

序列化的目的是获取内部任意数据结构,并将其编码为可移植格式,以便在其他地方的PHP系统中重用。它不会产生在URL上下文中保证有效的代码。基本上你是用锤子敲击螺丝。用螺丝刀代替。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17347766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档