Jam*_*mes 35 html css php whitespace
我有像html代码:
<div class="wrap">
<div>
<div id="hmenus">
<div class="nav mainnavs">
<ul>
<li><a id="nav-questions" href="/questions">Questions</a></li>
<li><a id="nav-tags" href="/tags">Tags</a></li>
<li><a id="nav-users" href="/users">Users</a></li>
<li><a id="nav-badges" href="/badges">Badges</a></li>
<li><a id="nav-unanswered" href="/unanswered">Unanswered</a></li>
</ul>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如何通过PHP删除标签之间的空白?
我们应该得到:
<div class="wrap"><div><div id="hmenus"><div class="nav mainnavs"><ul><li><a id="nav-questions" href="/questions">Questions</a></li><li><a id="nav-tags" href="/tags">Tags</a></li><li><a id="nav-users" href="/users">Users</a></li><li><a id="nav-badges" href="/badges">Badges</a></li><li><a id="nav-unanswered" href="/unanswered">Unanswered</a></li></ul></div></div></div></div>
Run Code Online (Sandbox Code Playgroud)
Cze*_*ogy 51
$html = preg_replace('~>\s+<~', '><', $html);
但我没有看到这一点.如果您尝试使数据量更小,则有更好的选择.
Sav*_*ova 10
自问这个问题以来已经有一段时间了,但我仍然认为有必要发布这个答案,以帮助有同样问题的人.
我没有采用这些解决方案,因此我提出了这个解决方案:使用output_buffer.
该函数ob_start接受一个回调作为参数,在输出之前应用于整个字符串.因此,如果在刷新输出之前从字符串中删除空格,那么就完成了.
/**
* Remove multiple spaces from the buffer.
*
* @var string $buffer
* @return string
*/
function removeWhitespace($buffer)
{
return preg_replace('/\s+/', ' ', $buffer);
}
ob_start('removeWhitespace');
<!DOCTYPE html>
<html>
<head></head>
<body></body>
</html>
ob_get_flush();
Run Code Online (Sandbox Code Playgroud)
以上将打印如下:
<!DOCTYPE html> <html> <head> </head> <body> </body> </html>
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
如何在OOP中使用它
如果您在PHP中使用面向对象的代码,则可能需要使用对象内部的回调函数.
如果您有一个名为HTML的类,则必须使用此代码行
ob_start(["HTML","removeWhitespace"]);
Run Code Online (Sandbox Code Playgroud)
以防万一有人仍然需要这个,我从@Martin Angelova 的回复和@Savas Vedova 中创造了一个函数,同样解决了我的问题的结果如下:
<?php
function rmspace($buffer){
return preg_replace('~>\s*\n\s*<~', '><', $buffer);
};
?>
<?php ob_start("rmspace"); ?>
//Content goes in here
<?php ob_end_flush(); ?>
Run Code Online (Sandbox Code Playgroud)
注意:我没有在生产环境中测试性能损失
Inc*_*ito -4
我无法删除这个答案,但它不再相关了,网络格局在 8 年内发生了很大变化,以至于它变得毫无用处。
| 归档时间: |
|
| 查看次数: |
42896 次 |
| 最近记录: |