当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在PHP函数中返回HTML?(不将返回值构建为字符串)

如何解决《有没有办法在PHP函数中返回HTML?(不将返回值构建为字符串)》经验,为你挑选了5个好方法。

我有一个PHP函数,我用它来输出标准的HTML块.它目前看起来像这样:


    
    

我想在函数内部返回(而不是回显)HTML.有没有办法在不在字符串中构建HTML(上面)的情况下执行此操作?



1> Paul Dixon..:

您可以使用支持变量插值的heredoc,使其看起来相当整洁:

function TestBlockHTML ($replStr) {
return <<
    

{$replStr}

HTML; }

但请密切注意手册中的警告 - 结束行不得包含任何空格,因此不能缩进.


它可以按照您的喜好缩进,但应该在标识符后面有一个换行符.
此外,<<< HTML heredoc标识符不能缩进,即如果它前面没有诸如"return"之类的内容.

2> Konrad Rudol..:

是的,有:你可以echo使用ob_start以下方法捕获ed文本:


    
    


确切地说,以这种方式突出显示语法,并为关键字着色,就像它们是普通HTML一样,而不是字符串中的内容。绝对是更好的可维护性答案,应始终放在第一位

3> Lorien Brune..:

这可能是一个粗略的解决方案,我很感激有人指出这是否是一个坏主意,因为它不是功能的标准用法.我已经成功地从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
$content

PHP函数

function YOURFUNCTIONNAME($url){

$html_string = file_get_contents($url);
return $html_string;

}

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有