【问题标题】:Class function echos output inside heredoc string, but in wrong place类函数在heredoc字符串中回显输出,但位置错误
【发布时间】:2012-10-01 07:02:07
【问题描述】:

我正在尝试在我的脚本的一个部分中使用一个heredoc 字符串,在这个heredoc 字符串内部是一个来自类内部的函数,它输入一些动态的东西。

该函数正确输出代码...但在错误的位置。这就是我的意思:

$output = <<<HTML
blah blah
blah
blah blah
<select>
{$admin->dropAcctNumbers()}
</select>
blah blah
blah
HTML;

当它显示在网络浏览器中时,它会显示从dropAcctNumbers() 内部一直回显的代码:

    <option>Account Numbers</option>
blah blah
blah
blah blah
<select>
</select>
blah blah
blah

什么时候应该在这里:

blah blah
blah
blah blah
<select>
    <option>Account Numbers</option>
</select>
blah blah
blah

有什么想法吗?

【问题讨论】:

    标签: php class function heredoc


    【解决方案1】:

    您的方法$admin-&gt;dropAcctNumbers 正在打印信息而不是returning 它..

    例子

    echo "<pre>";
    $admin = function () {
        print "    Account Numbers";
    };
    
    $output = <<<HTML
    blah blah
    blah
    blah blah
    {$admin()}
    blah blah
    blah
    HTML;
    
    echo $output;
    

    输出

        Account Numbersblah blah
    blah
    blah blah
    
    blah blah
    blah
    

    还有

    echo "<pre>";
    $admin = function () {  return "    Account Numbers" ; } ;
    
    $output = <<<HTML
    blah blah
    blah
    blah blah
    {$admin()}
    blah blah
    blah
    HTML;
    
    echo $output ;
    

    输出

    blah blah
    blah
    blah blah
        Account Numbers
    blah blah
    blah
    

    【讨论】:

    • 我不确定我是否想要&lt;pre&gt; 标签...我稍微修改了我的示例以反映实际情况。
    • 这两种情况 ... 100% 不同 ... 但它们仍然会给出不同的结果 请参阅打印:codepad.viper-7.com/XU01jm 并查看返回:codepad.viper-7.com/U4Ni0q
    【解决方案2】:

    试试这个

    echo "<pre>".$output."</pre>";
    

    【讨论】:

    • 我不确定我是否想要 &lt;pre&gt; 标签...我稍微修改了我的示例以反映实际情况。
    猜你喜欢
    • 2021-11-25
    • 2019-04-07
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多