array( "context" => $context, "date" -6ren">
gpt4 book ai didi

php - 如何在 PHP 5.3 中将 JSON 保存为未转义的 UTF-8?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:54:56 24 4
gpt4 key购买 nike

我创建了一个 JSON 文件:

$json = array(
"Sample" =>array(
"context" => $context,
"date" => $date
)
);

$url= "sample.json";
$myfile = fopen($url, "w") or die("Unable to open file!");
fwrite($myfile, json_encode($json));
fclose($myfile);

我需要将它保存为 UTF-8,我不能在 PHP 5.3 中使用 JSON_UNESCAPED_UNICODE。那我现在该怎么办呢?

最佳答案

如果你不能使用JSON_UNESCAPED_UNICODE ,您可能可以在编码后自行取消转义 JSON:

$json = array(
'Sample' => array(
'context' => 'جمهوری اسلامی ایران'
)
);

$encoded = json_encode($json);
var_dump($encoded); // context: "\u062c\u0645..."

$unescaped = preg_replace_callback('/\\\\u(\w{4})/', function ($matches) {
return html_entity_decode('&#x' . $matches[1] . ';', ENT_COMPAT, 'UTF-8');
}, $encoded);

var_dump($unescaped); // context is unescaped
file_put_contents('sample.json', $unescaped);

这是一个 example in PHP5.3 .

但是,这不是必需的,因为任何 JSON 解析器都应该正确解析转义的 Unicode 字符并返回原始字符串。

编辑:更好的模式可能是 /(?<!\\\\)\\\\u(\w{4})/ ,这避免了不正确地转义 JSON 序列,如 "\\u1234" . See an example .

关于php - 如何在 PHP 5.3 中将 JSON 保存为未转义的 UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24932572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com