在base64中转义编码php

时间:2014-03-01 06:52:18

标签: php base64

我正在尝试使用php中的base64编码我的脚本,但为什么我的代码会自动添加反斜杠\ 单引号'或双引号" 这是我用来编码的代码

$encode = $_POST ['encode'];
$encod = base64_encode ($encode);
echo "<form action='?' method='post'><textarea name='encode'></textarea><input type='submit' value='Encode'></form><textarea> ".$encod." </textarea>";

我在上面使用代码,然后我尝试编码这个脚本:

echo "just test";
echo 'or just test'; 

和结果

  

PD9waHAgZWNobyBcImp1c3QgdGVzdFwiOw0KZWNobyBcJ29yIGp1c3QgdGVzdFwnOyA / PG ==

当我解码时,结果

echo \"just test\";
echo \'or just test\';

如何删除反斜杠??

我尝试在str_replace$encod上使用stripslashes($encod),但它不起作用。

2 个答案:

答案 0 :(得分:1)

我尝试解码你的base64编码字符串,它产生了相同的结果。我尝试再次编码,斜杠和所有,并产生相同的编码字符串。

问题不在于你是以某种方式从解码过程中获取未知的斜线,而是在编码字符串之前存在斜杠。

没有斜杠的相同字符串是这样的: PD9waHAgZWNobyAianVzdCB0ZXN0IjsNCmVjaG8gJ29yIGp1c3QgdGVzdCc7ID8+

尝试解码。

我相信您的问题的真正解决方案可以在这里找到:

Why are $_POST variables getting escaped in PHP?

答案 1 :(得分:0)

我相信你在base64中编码的字符串已经在json中编码了(因为我必须用json字符串完成POST)。

Json躲避引号的方法就是你所描述的问题:

请参阅:json_encode PHP

所以这里的解决方案是首先从base64解码(base64_decode [PHP])然后从json解码(jsoN_decode()[PHP])或(JSON.parse()[JS])