如何在PHP中处理JS序列化项?

时间:2011-04-12 15:30:55

标签: php javascript

嘿伙计们! 我在处理使用JS序列化的提交表单中的数据时遇到了一些麻烦。 在表单中有一个textarea字段,用户可以输入他们想要的任何文本,但是当他们输入&像“苹果和橘子”一样,我无法处理它。我们知道JS序列化&到%26和带有“+”符号的空格。

现在回到PHP中,我试图将这些数据放入数据库并在其他地方调用它,但在我的生活中我不知道如何正确处理特殊字符。

请注意,我也是php在“&”爆炸数据签名使其成为一个数组,然后作为数组放入数据库。我尝试了几种方法,如urldecode,htmlentities,但那些没有用,因为记得我需要在“&”爆炸。

我在JS中序列化,因为它是一个AJAX提交表单。

5 个答案:

答案 0 :(得分:1)

url*decode*怎么办?

答案 1 :(得分:1)

答案 2 :(得分:1)

如果某些东西在JS中序列化然后发送到PHP脚本 - 它只能通过GET或POST方法,这反过来意味着序列化数据将存储在以下阵列之一:$ _GET if method is GET,如果方法是POST则为$ _POST,无论方法如何都为$ _REQUEST(因此您可以使用单个数组捕获POST和GET变量)。

这意味着你不应该拥有从php数组创建的自定义函数,因为它已经为你完成了。 如果要以字符串格式存储数组,则应在将该数组存储到数据库之前对其进行序列化,然后在从数据库中取出数组格式后再将其反序列化。

答案 3 :(得分:0)

我会使用双重替换来防止使用循环。

首先,我会替换所有&到'#### - ####'或任何其他不太可能出现的代码(或使用chr(0))。

然后使用urldecode()将所有%26替换为&和所有+到''

最后爆炸'#### - ####'而不是&

答案 4 :(得分:0)

您可以使用urldecode来获取这些编码字符的文本表示。我怀疑JS是这样做的。