首页 > 解决方案 > 使用 $_GET 后 foreach 解码的 Base64 字符串

问题描述

我有问题,当在没有编码的情况下在 URL 中发布信息时,一切都很好,我可以将 foreach 用于所有信息,因为我将它作为数组获取

但是当使用 GET 并对其进行解码时,信息会从数组转换为字符串,并且不能再使用 foreach,(我尝试再次将其编码为 json,但我失败了)。

我在这样的 URL 中有 base64 值

http://www.test.com/index.php?info=dXNlcm5hbWU9PmJyb29rcwpjb2xvcj0+Ymx1ZQp1cmw9Pmh0dHA6Ly93d3cudGVzdC5jb20vNDE0Mg==

$info = base64_decode($_GET['info']);用来获取和解码

我想像这样把它放在里面echo <li>$info_key is $info_value</li>

注意:解码时你会看到我在键和值之间使用 =>,并为每个数组使用返回线,也许我可以使用 PHP_EOL 来拆分或收集

另一个注意:我不知道会从 url 获得多少值,因为我需要使用 foreach 循环所有收集的值

谢谢stackoverflow社区✌</p>

标签: phpforeachbase64

解决方案


解码后,您的字符串如下所示:

username=>brooks
color=>blue
url=>http://www.test.com/4142

foreach用于循环迭代,因此您需要将其解析为数组。

<?php
$str = base64_decode('dXNlcm5hbWU9PmJyb29rcwpjb2xvcj0+Ymx1ZQp1cmw9Pmh0dHA6Ly93d3cudGVzdC5jb20vNDE0Mg==');

$lines = explode(PHP_EOL, $str);

foreach ($lines as $line) {
    $line = explode('=>', $line);
    echo '<li>'.$line[0].' is '.$line[1].'</li>'.PHP_EOL;
}

https://3v4l.org/TodEB

<li>username is brooks</li>
<li>color is blue</li>
<li>url is http://www.test.com/4142</li>

虽然你应该避免你正在做的事情并将它们作为参数传递。


推荐阅读