php preg_replace字符串不起作用

时间:2018-05-28 16:37:21

标签: preg-replace

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

1 个答案:

答案 0 :(得分:1)

至于具体问题,{是正则表达式中的特殊字符,您需要将其转义。请参阅PHP手册中的Meta-characters section PCRE语法。所以将第一个参数更改为'/, \{/'没关系,正如@Hugo演示的那样,它应该可行,并且在没有告诉我们 你的方法失败的情况下,我们无法做到帮助更多。

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

最后,也许你真的不需要这样做。如果您这样做是为了节省HTTP流量或其他内容,请确保您的服务器gzips响应,缓存正确等等。