剥离除代码标记之间的代码之外的新行

时间:2016-06-03 20:45:25

标签: php regex

要压缩我的PHP网站,我将使用ob_start函数删除所有换行符和不需要的空格。但是因为我正在使用一些新行敏感的代码(编程语言标记),所以当文本介于预标记之间时,我想保留这些换行符和空格。

Some

我正在努力学习正则表达式,所以我会很感激这一点。提前致谢

2 个答案:

答案 0 :(得分:0)

如果我理解你,你可能想试试这个......

function oneLine($str)
{   // HTML code to a single line
    return((strpos($str,"</pre>")) ? $str:preg_replace('/\s+/',' ',$str));
}

上面的代码将擦除所有制表符/换行符/ Feed字符并将其转换为单个空格,使整个字符串成为一行。但是,如果找到</pre>结束标记,则不会发生任何事情。

结论?如果你的页面内容没有一次回显,但是你有$ head,$ nav,$ aside,$ article(等等......)并且你输出这些,而不是echo(oneLine($nav)) *(等等)只需)就可以了。

即使你没有,但你一口气吐出所有的东西,例如:echo(oneLine($request));并且你没有过多的预先格式化的文本或只有几页显示一些代码样本等等。“为了非修剪时尚而牺牲了那些带有pre标签的特定页面..我的意思是,值得打扰......?

答案 1 :(得分:0)

可以使用跳过/失败动词来完成此操作

查找(?:<pre>.*?</pre>(*SKIP)(*FAIL)|\s+)
替换" "

 (?:
      <pre> .*? </pre>
      (*SKIP)(*FAIL)
   |  \s+ 
 )