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 响应、正确缓存等。
我曾尝试使用 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?
具体问题, 没关系,正如@Hugo 所展示的那样,它应该可以工作,并且无需告诉我们 如何 您的方法失败了,我们可以'帮助更多。{
是正则表达式中的特殊字符,需要转义。请参阅 PHP 手册中的 Meta-characters section PCRE 语法。因此,将第一个参数更改为 '/, \{/'
.
更重要的是,这非常容易出错。像 ['hello, {name}']
这样的 JSON 字符串呢?您的尝试会将引号内的部分 "minify" 错误地变成 ['hello,{name}']
。在这种情况下不是严重错误,但在其他情况下可能更严重。正确处理字符串文字是一件痛苦的事情,实际缩小 JSON 字符串的最简单解决方案是执行 json_encode(json_decode($json))
,因为默认情况下 PHP 不会很好地打印或将不必要的空格放入 JSON.
最后,也许您真的不需要这样做。如果您这样做是为了节省 HTTP 流量或其他什么,只需确保您的服务器 gzip 响应、正确缓存等。