3

我正在使用一个名为parse_str的 PHP 函数将一些 URL 编码的数据(如“name=blah&number=123”)转换为 PHP 数组。它确实可以正常工作,但它会添加一个“amp;” 在结果关联数组中每个键的开头,第一个键除外。例如:

response=Fail&responsecode=1&description=DUPLICATE_TRANSACTION

转换为以下数组:

Array ( [ \"1.0\" 
encoding=\"utf-8\"?>
response=Fail 
[amp;responsecode] => 1 
[amp;description] => DUPLICATE_TRANSACTION)

使用以下代码:

parse_str($response, $response_array);
print_r($response_array);

我不确定为什么要添加那些“amp;”。这里有什么问题?

4

1 回答 1

0

无法重现它

<?php

$response = 'response=Fail&responsecode=1&description=DUPLICATE_TRANSACTION';
parse_str($response, $response_array);
print_r($response_array);
Array
(
    [response] => Fail
    [responsecode] => 1
    [description] => DUPLICATE_TRANSACTION
)

但是,您在其中一条评论中提供了有用的提示:

string(614) " response=Fail&responsecode=1&description=DUPLICATE_TRANSACTION"

这显然不是一个 614 字节的字符串。你的数据不是response=Fail&responsecode=1&description=DUPLICATE_TRANSACTION

那,以及你得到这个的事实:

[ \"1.0\" 
encoding=\"utf-8\"?>

... 表明您实际上有一个 XML 或 HTML 文档,但您让浏览器将其呈现为 HTML,因此标签被隐藏。请使用浏览器的“查看源代码”功能(通常为Ctrl+ U)查看实际输入。

于 2013-07-25T06:46:37.830 回答