URL中的&符号将转换为“amp;”在PHP中转换为数组时

时间:2013-07-25 05:56:33

标签: php arrays url-encoding

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

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);

我不确定为什么要添加这些“放大器”。这有什么问题?

1 个答案:

答案 0 :(得分:0)

cannot reproduce it

<?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 )查看实际输入。