使用 PHP 对文本区域内的多行进行 Base64 解码

Base64 decode multiple lines within a textarea with PHP

我有一个简单的脚本,用户在其中单击一个按钮,代码将执行 shell 命令,从 csv 中剪切 base64 加密数据并将其放置在文本区域中。然后,我只需将该值分配给一个变量并回显解码结果。但是,我的结果是什么。如果我回显 $encoded_data 我确实看到了编码的字符串。

我的数据在文本区域内的布局如下:

ZGF2aWRAZW1haWwuY29t
ZGF2aWRAZW1haWwuY29t
ZGF2aWRAZW1haWwuY29t
ZGF2aWRAZW1haWwuY29t
...

有数百行编码字符串。

如果我传递一个字符串,解码器就可以工作。但是,对于文本区域内的文本,它 returns 什么都没有。我假设传递的字符串数量会导致内存问题。我还注意到,如果我尝试传递多个字符串,我可能会因为换行而得到奇怪的字符。我怎样才能避免这种情况?

<form name="decode" action="" method="post" enctype="multipart/form-data">
<textarea id="decode_field" name="decode_field" rows="10" cols="50" autofocus><?
if (isset($_POST['decode_btn'])) {

       // Cut base64 data from csv file. Selected data is in col 2 of    each row.
       $encoded_data = shell_exec("cut -d, -f2 test.csv");

       // Display data to user.
       echo base64_decode($encoded_data);

}
?></textarea>
<input type="submit" name="decode_btn" value="Get Decoded Data" />
</form>

输出应该是逐行解码为常规字符串的base64字符串。

您想改用 exec,这样您就可以从剪切中获得一组输出行。

   $data = array();
   exec("cut -d, -f2 test.csv", $data);
   foreach($data as $line) {
       echo base64_decode($line);
   }