我找到了一种方法来下载我的json文件,该文件包含wordpress中的一些json内容,在表单提交上,通过调用外部文件download.php
然后执行header()
。这是有效的,但是我通过下载获得的json文件已经转义了所有字符。甚至是双引号。并且json我在下载之前回应,不是。
已下载.json
:
{\"post\":[{\"ID\":3467,\"post_author\":
回应.json
:
{"post":[{"ID":3467,"post_author":"1"
我添加了菜单页面:
add_menu_page( 'Download JSON', 'Download JSON', 'manage_options', 'custompage', 'download_json', 'dashicons-download', 6000 );
在我的download_json()
函数中,我有
$json_out = json_encode($output);
$download = htmlspecialchars($json_out);
echo '<form method="post" action="'.plugins_url().'/my_plugin/download.php">
<input type="hidden" name="json" value="'.$download.'">
<button type="submit" class="button-secondary">Download JSON</button>
</form>';
$output
是我的数组中的内容。隐藏输入字段中的json看起来像是回显的json。在我的download.php
文件中
<?php
header("Content-type: application/force-download");
header('Content-Disposition: inline; filename="content.json"');
$json_contents = $_POST['json'];
echo $json_contents;
当我点击按钮时会下载content.json
文件,但我有额外的转义字符,我不知道为什么。
感谢任何帮助。
答案 0 :(得分:1)
这是我在PHP4上用来删除斜杠的旧函数,但只有在自动添加它们时才会这样。
请注意,强烈建议不要使用magic_quotes。 (我认为它甚至不存在于PHP5中,不确定)
此函数可以采用普通值或数组,然后对所有元素执行此操作。我好几年都没用过它,所以一定要测试它是否符合你的要求。
function stripslashesIfAutoAdded($something){
// This function removes added slashes
// It only removes them if they were added.
$mq_on = get_magic_quotes_gpc();
if (is_array($something)){
// loop over it and remove slashes where needed
$retArr = array();
foreach($something as $oneElement) {
if ($mq_on){
$retArr[] = stripslashes($oneElement);
} else {
$retArr[] = $oneElement;
}
}
return $retArr;
} else {
if ($mq_on){
return stripslashes($something);
} else {
return $something;
}
}
}