【问题标题】:How can I create a PHP array from this serialized string?如何从这个序列化字符串创建 PHP 数组?
【发布时间】:2019-02-23 15:52:25
【问题描述】:

我有一个如下所示的字符串:

id_company=57&name=&address=&zip=&place=&phone=&mobile=&email=&birthdate=&birthplace=&bsn=&driver_expires=&role=&date_started=&contract=Tijdelijk&id_type=Paspoort&id_number=&id_expires=

以上示例大部分为空(id_company 除外)。

我像这样在 jquery 中序列化我的表单:

var $serialized = $form.serialize();

在我的 php 中我这样做:

$jsonemployee = unserialize($_POST['serialized']);

之后我尝试打印它,因为我需要一个数组:

echo '<pre>';
print_r($jsonemployee);
echo '</pre>';

但这并没有说明什么。

我 100% 确定所有数据都已传递,在我的网络选项卡中,我看到正在发布的字符串,如果我只是回显该字符串,它会显示该字符串。

如何从该字符串创建 PHP 数组?

【问题讨论】:

  • 首先要做的是var_dump($_POST['serialized'])。如果您没有看到任何内容,则该数据从未发送到服务器。
  • @JohnConde 我在 var_dump 时看到了字符串。 string(185) "id_company=57&amp;name=&amp;address=&amp;zip=&amp;place=&amp;phone=&amp;mobile=&amp;email=&amp;birthdate=&amp;birthplace=&amp;bsn=&amp;driver_expires=&amp;role=&amp;date_started=&amp;contract=Tijdelijk&amp;id_type=Paspoort&amp;id_number=&amp;id_expires="
  • 你知道如何爆炸例如'&'吗?这将为您创建一个数组。
  • @RonnieOosting 是的,但不应该有一个 PHP 函数可以为我完成这一切吗?

标签: javascript php arrays


【解决方案1】:

unserialize 不是用于反序列化 that 格式,它是 serialize 的对应物,产生非常不同的结果。要在 PHP 中解析 URL 编码的 字符串,请使用 parse_str

parse_str($_POST['serialized'], $result);
var_dump($result);

当然,您将 URL 编码字符串发送为 $_POST['serialized'] 有点奇怪……您应该将其作为唯一的请求正文发送,PHP 会自动将其解析为 $_POST 而您不会必须这样做。

【讨论】:

  • 太棒了!这正是我需要的,谢谢。 - 我会在 9 分钟后接受。
  • @twan 请注意,jQuery 的 serialize() 和 php 的 serialize() 完全不相关,并且产生的结果远非相似。
  • 是的,现在有道理了,我认为他们做了同样的事情@jeroen
  • 如果任何文本有 &amp; 符号,这将无法正常工作,是否有人遇到同样的问题?
  • @Udara 发布您自己的问题并附上详细信息。 &amp; 首先需要正确编码,因为它在 URL 编码字符串中具有特殊含义。
【解决方案2】:

你只需要将这个字符串转换成一个数组:

$myArray = explode("&",$_POST['serialized']);

我认为这对你有用。

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 2011-08-20
    • 2015-03-08
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多