0

我有以下 compress() 函数:

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 个后续空格。

我想知道如果使用正则表达式替换这是否会更快、更优化。但是,即使会,我也不知道该怎么做。

有任何想法吗?

4

1 回答 1

2

怎么样:

return preg_replace(
    '# {2,}#',
    '  ',
    preg_replace(
        '#\r?\n#s',
        '',
        $input
    )
);

我相信这会按照您的建议进行,仅此而已。至于它是否更快或更高效,您必须运行一些测试,我不能随便说。 preg_replace一般比较贵。我在这里调用了两次,所以有相当多的开销。但这是您如何使用 p_r 执行此操作的示例。

于 2013-04-25T21:23:46.707 回答