首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何重写这个compress()函数以不使用while()循环?

如何重写这个compress()函数以不使用while()循环?
EN

Stack Overflow用户
提问于 2013-04-26 05:15:59
回答 1查看 48关注 0票数 0

我有以下的compress()函数:

代码语言:javascript
复制
function compress($input){
   $from = array("\r\n", "\n");
   $to = array('', '');
   $output = str_replace($from, $to, $input);
   while(true){
      $output = str_replace("  ", " ", $output);
      if (strpos($output, "  ") === FALSE){
         break;
      }
   }
   return $output;
}

我使用它来压缩输出的HTML代码,使其不包含任何换行符,也不包含超过2个后续空格。

我想知道,如果使用regex替换,这是否会更快、更优化。然而,即使它会,我也不确定该怎么做。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-26 05:23:47

这样如何:

代码语言:javascript
复制
return preg_replace(
    '# {2,}#',
    '  ',
    preg_replace(
        '#\r?\n#s',
        '',
        $input
    )
);

我相信这将完成您的建议,仅此而已。至于它是更快还是更高效,你必须运行一些测试,我不能马上说。preg_replace通常相对较贵。我在这里调用了两次,所以有相当多的开销。但这是一个使用p_r实现的示例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16224876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档