将字符串与值一起拆分为相似的元素

时间:2019-10-02 05:27:10

标签: parsing

我有一个类似

的字符串
$query = "date=20.10.2007&amount=400+date=11.02.2008&amount=1400+date=12.03.2008&amount=1500";

有两个名为date和amount的变量,包含一个值,例如date = 20.10.2007和amount = 400,这两个变量以不同的值重复其本身,并且每个集合(日期和数量)均以“ +”号分隔。现在我要显示这样的字符串:

   Date      Amount
20.10.2007   400
11.02.2008   1400
12.02.2008   1500

需要帮助

2 个答案:

答案 0 :(得分:0)

我们可以在此处明智地使用explodepreg_split以获得所需的输出:

$query = "date=20.10.2007&amount=400+date=11.02.2008&amount=1400+date=12.03.2008&amount=1500";
$array = explode("+", $query);  

$counter = 0;
echo "Date         Amount\n";
foreach($array as $item) {
    if ($counter > 0) echo "\n";
    $parts = explode("&", $item);
    echo preg_split("/=/", $parts[0])[1] . "   ";
    echo preg_split("/=/", $parts[1])[1];
    $counter = $counter + 1;
}

此打印:

Date         Amount
20.10.2007   400
11.02.2008   1400
12.03.2008   1500

这里的逻辑是,我们首先在+上拆分查询字符串,以获得类似于以下内容的组件:

date=20.10.2007&amount=400

然后,在所有此类组件的循环内,我们再次除以&,以获得dateamount项。最后,将它们分别在=上拆分以获取实际值。

答案 1 :(得分:0)

非常感谢Tim Biegeleisen的友好指导。在您的帮助下,我使用以下代码进行了此操作:

$str = "date=20.10.2007&amount=400+date=11.02.2008&amount=1400+date=12.03.2008&amount=1500"; $array = explode("+",$str); 
$i = 0; 
echo nl2br("Date Amount \n"); 
foreach($array as $item[$i]) 
{ 
parse_str($item[$i]); 
echo $date; 
echo $amount."<br>"; 
$i++;
 }