如何从此序列化字符串创建PHP数组?

twa*_*wan 2 javascript php arrays

我有一个看起来像这样的字符串:

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=
Run Code Online (Sandbox Code Playgroud)

上面的示例大部分都是空的(除了id_company).

我在jquery中序列化我的表单,如下所示:

var $serialized = $form.serialize();
Run Code Online (Sandbox Code Playgroud)

在我的PHP中我这样做:

$jsonemployee = unserialize($_POST['serialized']);
Run Code Online (Sandbox Code Playgroud)

之后我尝试打印它因为我期待一个数组:

echo '<pre>';
print_r($jsonemployee);
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)

但这没有给我什么.

我100%确定所有数据都已通过,在我的网络选项卡中,我看到发布的字符串,如果我只是回显字符串,则显示字符串.

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

dec*_*eze 5

unserialize不是为了反序列化那种格式,而是它的对应物serialize,它会产生非常不同的结果.要在PHP中解析URL编码的字符串,请使用parse_str.

parse_str($_POST['serialized'], $result);
var_dump($result);
Run Code Online (Sandbox Code Playgroud)

当然,你发送一个URL编码的字符串有点奇怪$_POST['serialized']...你应该把它作为唯一的请求体发送,PHP会自动解析它$_POST,你不必做任何这个.

  • @twan请注意,jQuery的`serialize()`和php的`serialize()`是完全不相关的,并且产生的结果远非类似. (2认同)