PHP混写HTML产生多余换行的最优规范实现方式咨询
PHP与HTML混写换行问题最优解决方案
方案1:逻辑视图分离(最推荐)
提前在HTML渲染前完成所有PHP逻辑计算,视图层仅输出预处理好的变量,完全避开内嵌逻辑的换行问题,也是PHP开发的通用规范。
<?php // 所有业务逻辑提前处理,和视图代码完全分离 if ($useCustomStyle) { $stylesheetPath = '/assets/css/custom.css'; } else { $stylesheetPath = '/assets/css/default.css'; } ?> <!-- HTML部分仅做变量输出,无多余逻辑无换行问题 --> <link rel="stylesheet" type="text/css" media="all" href="<?= $stylesheetPath ?>">
方案2:内嵌逻辑用三元表达式压缩
如果逻辑简单无需提前处理,直接用三元运算符写在单行PHP标签内,既保证可读性也不会产生多余换行:
<link rel="stylesheet" type="text/css" media="all" href="<?= $useCustomStyle ? '/assets/css/custom.css' : '/assets/css/default.css' ?>">
方案3:多行判断用输出缓冲过滤空白
如果必须在属性内写多行复杂逻辑,可以用输出缓冲统一过滤属性值内的多余空白,不用调整代码格式也能保证输出正常:
<?php // 开启输出缓冲,回调过滤href/src等属性内的开头空白 ob_start(function($html) { return preg_replace('/(href|src|action)="\s+/', '$1="', $html); }); ?> <link rel="stylesheet" type="text/css" media="all" href=" <?php if ($conditionA) { echo '/path/to/style-a.css'; } elseif ($conditionB) { echo '/path/to/style-b.css'; } else { echo '/path/to/style-default.css'; } ?>"> <?php ob_end_flush(); ?>
补充说明:PHP会将标签外的所有空白字符(包括换行、空格)直接输出到HTML,所以尽量避免在HTML属性值的引号内部插入PHP标签外的换行,容易导致属性值解析异常。
内容的提问来源于stack exchange,提问作者Angel Hess
相关产品推荐
相关产品推荐

