Google页面建议您缩小HTML,即删除所有不必要的空格.
CodeIgniter确实具有giziping输出的功能,或者可以通过.htaccess.但我仍然想从最终的HTML输出中删除不必要的空格.
我用这段代码玩了一下,看起来很有效.这确实导致HTML没有多余空格并删除其他选项卡格式.
class Welcome extends CI_Controller
{
function _output()
{
echo preg_replace('!\s+!', ' ', $output);
}
function index(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
问题是可能有像<pre>,<textarea>等等的标签
,其中可能有空格,正则表达式应该删除它们.那么,如何从最终的HTML中删除多余的空间,而不使用正则表达式影响这些特定标记的空格或格式?
感谢@Alan Moore得到了答案,这对我有用
echo preg_replace('#(?ix)(?>[^\S ]\s*|\s{2,})(?=(?:(?:[^<]++|<(?!/?(?:textarea|pre)\b))*+)(?:<(?>textarea|pre)\b|\z))#', ' ', $output);
Run Code Online (Sandbox Code Playgroud)
ridgerunner在分析这个正则表达方面做得很好.我最终使用了他的解决方案.干杯里的干杯.
以下函数打破了我在$ pattern变量中提供的正则表达式.如果我改变正则表达式我很好,所以我认为这是问题所在.但是,我没有看到这个问题,即使它们已经打开,我也没有收到标准的PHP错误.
function parseAPIResults($results){
//Takes results from getAPIResults, returns array.
$pattern = '/\[(.|\n)+\]/';
$resultsArray = preg_match($pattern, $results, $matches);
}
Run Code Online (Sandbox Code Playgroud)
Firefox 6:连接已重置
Chrome 14:错误101(net :: ERR_CONNECTION_RESET):连接已重置.
IE 8:Internet Explorer无法显示网页
更新:
Apache/PHP可能崩溃.这是我运行脚本时的Apache错误日志:
[2011年10月1日星期六11:41:40] [通知]父:子进程退出状态255 - 重新启动.
[2011年10月1日星期六11:41:40] [通知]配置Apache/2.2.11(Win32)PHP/5.3.0 - 恢复正常运行
在Windows 7上运行WAMP 2.0.
preg_replace_callback('#<(code|pre)([^>]*)>(((?!</?\1).)*|(?R))*</\1>#si', 'self::replaceit', $text);
?
我正在尝试在代码/预标记之间替换文本,它可以实现我想要的,但有时会破坏页面.
我用几个文本样本测试了它,其中一些包含许多& <等字符使浏览器停止显示带有"远程服务器关闭的连接"消息的页面