是否有可靠的parse_str()替代方案,不容易出错?

gre*_*emo 3 php url

parse_str()解析查询字符串有什么可靠的函数替代方法吗?

查询字符串来自外部服务(并且您无法完全控制它)时,我发现它非常容易混淆且容易出错:

$error = "Error message";
parse_str("param1=hello&error=false"); // Overrides $error

parse_str($externalQuery);
// Which variables are setted and which not?
Run Code Online (Sandbox Code Playgroud)

Asa*_*aph 5

将可选的第二个参数传递给parse_str()它,它将把值放在一个关联数组中,而不是创建/覆盖变量.从PHP手册:

如果存在第二个参数arr,则变量将作为数组元素存储在此变量中.

您必须首先初始化阵列.做这个:

$error = "Error message";
$vars = array();
parse_str("param1=hello&error=false", $vars);
echo $error . "\n";
print_r($vars);
Run Code Online (Sandbox Code Playgroud)

哪个输出:

Error message
Array
(
    [param1] => hello
    [error] => false
)
Run Code Online (Sandbox Code Playgroud)