我曾尝试用str_replace()缩小json文件,但是当我使用它时效果不好。
//I want to minify a json file with php.
//Here I am trying to replace ", {" with ",{"
//$result = preg_replace('/abc/', 'def', $string); # Replace all 'abc' with 'def'
$new = preg_replace('/, {/', ',{', $new); //doesn't work.. why?
答案 0 :(得分:1)
至于具体问题,没关系,正如@Hugo演示的那样,它应该可行,并且在没有告诉我们 你的方法失败的情况下,我们无法做到帮助更多。{
是正则表达式中的特殊字符,您需要将其转义。请参阅PHP手册中的Meta-characters section PCRE语法。所以将第一个参数更改为'/, \{/'
。
更重要的是,这非常容易出错。那个像['hello, {name}']
这样的JSON字符串怎么样?您的尝试将错误地缩小"缩小"引号内的部分并将其转换为['hello,{name}']
。在这种情况下不是一个严重的错误,但在其他情况下可能更严重。正确处理字符串文字是一件痛苦的事,实际缩小JSON字符串的最简单的解决方案是执行json_encode(json_decode($json))
,因为默认情况下PHP不会打印或将不必要的空格放入JSON中。
最后,也许你真的不需要这样做。如果您这样做是为了节省HTTP流量或其他内容,请确保您的服务器gzips响应,缓存正确等等。