php preg_replace 字符串无效

php preg_replace string doesn't work

我曾尝试使用 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?

具体问题,{是正则表达式中的特殊字符,需要转义。请参阅 PHP 手册中的 Meta-characters section PCRE 语法。因此,将第一个参数更改为 '/, \{/'. 没关系,正如@Hugo 所展示的那样,它应该可以工作,并且无需告诉我们 如何 您的方法失败了,我们可以'帮助更多。

更重要的是,这非常容易出错。像 ['hello, {name}'] 这样的 JSON 字符串呢?您的尝试会将引号内的部分 "minify" 错误地变成 ['hello,{name}']。在这种情况下不是严重错误,但在其他情况下可能更严重。正确处理字符串文字是一件痛苦的事情,实际缩小 JSON 字符串的最简单解决方案是执行 json_encode(json_decode($json)),因为默认情况下 PHP 不会很好地打印或将不必要的空格放入 JSON.

最后,也许您真的不需要这样做。如果您这样做是为了节省 HTTP 流量或其他什么,只需确保您的服务器 gzip 响应、正确缓存等。