我有一个PHP函数,我用它来输出标准的HTML块.它目前看起来像这样:
我想在函数内部返回(而不是回显)HTML.有没有办法在不在字符串中构建HTML(上面)的情况下执行此操作?
您可以使用支持变量插值的heredoc,使其看起来相当整洁:
function TestBlockHTML ($replStr) { return <<{$replStr}
HTML; }
但请密切注意手册中的警告 - 结束行不得包含任何空格,因此不能缩进.
是的,有:你可以echo
使用ob_start
以下方法捕获ed文本:
这可能是一个粗略的解决方案,我很感激有人指出这是否是一个坏主意,因为它不是功能的标准用法.我已经成功地从PHP函数中获取HTML而没有将返回值构建为具有以下内容的字符串:
function noStrings() { echo ''?>[Whatever HTML you want]刚刚'调用'函数:
noStrings();它将输出:
[Whatever HTML you want]使用此方法,您还可以在函数中定义PHP变量并在HTML中回显它们.
没有`echo`,只有`?> html <?php`,这样可以正常工作.检查[小提琴](http://phpfiddle.org/lite/code/ejs4-r3ua)
4> Rob..:创建模板文件并使用模板引擎读取/更新文件.它将增加代码在未来的可维护性以及单独显示逻辑.
使用Smarty的一个例子:
模板文件
{$title} {$string}码
function TestBlockHTML(){ $smarty = new Smarty(); $smarty->assign('title', 'My Title'); $smarty->assign('string', $replStr); return $smarty->render('template.tpl'); }
5> Cayde 6..:另一种方法是使用file_get_contents()并使用模板HTML页面
模板页面
$title $contentPHP函数
function YOURFUNCTIONNAME($url){ $html_string = file_get_contents($url); return $html_string; }