首页 > 解决方案 > parse_str 只返回第一个参数

问题描述

所以我写了一些代码应该简单地接受这个

title=title&description=description&image=(some image here)&color=ff0000

并返回这个

echo $meta["title"] //title
echo $meta["description"] //description
echo $meta["image"] //(some image here)
echo $meta["color"] //ff0000

相反,它仅出于某种原因返回标题......

<?php
    $url = $_SERVER["REQUEST_URI"];
    $url = substr($url, 2);
    $url = base64_decode($url);
    // title=title&description=description&image=(some image here)&color=ff0000
    // confusing part
    parse_str($url, $meta);
?>

标签: php

解决方案


这种事怎么办?

$string = 'title=title&description=description&image=(some image here)&color=ff0000';

$array = explode("&", $string);
$finalArray = [];
foreach ($array as $arr) {
    $singleArr = explode("=",$arr);
    $finalArray[$singleArr[0]] = $singleArr[1];
}
print("<pre>".print_r($finalArray,true)."</pre>");

这将打印出:

Array
(
    [title] => title
    [description] => description
    [image] => (some image here)
    [color] => ff0000
)

而不是重新发明轮子:)(谢谢@u_mulder)

$urlString = parse_url($string, PHP_URL_QUERY);
parse_str($urlString, $urlArray);
print_r($urlArray["image"]); // Or what ever paramneter, like
foreach($urlArray as $key => $value) {
    echo $urlArray[$key];
}

推荐阅读