【问题标题】:php function to make plain line breaks into a listphp函数将普通换行符转换为列表
【发布时间】:2013-11-12 00:52:24
【问题描述】:

我有一个变量 $boo 包含纯文本行,例如(带有单数换行符):

一个

b

c

我想要一个将其格式化为项目符号列表的函数。想出了以下内容,但无法安静地输出任何内容:

<?php
function listformat ($list) {
    $listformat = explode("\n", $listformat);
    foreach ($listformat as $test => $line) {
        return "<li>".$line."</li>";
    };
};
?>

<ul>
<?php
listformat ($boo);
?>
</ul>

如果我使用 echo 代替“return”并删除该功能,它会起作用。

【问题讨论】:

  • 发现我应该 echo listformat ($boo);如果我要使用 return,或者在函数中回显它,无论如何都不应该在 foreach 循环中完成。

标签: php line


【解决方案1】:

return 结束你的函数并将语句发送回调用它的任何地方。所以,是的,回声是必要的

<?php
function listformat ($list) {
    $listformat = explode("\n", $list);
    foreach ($listformat as $line) {
        echo "<li>".$line."</li>";
    };
};

echo '<ul>';
listformat($my_list_var);
echo '</ul>';

【讨论】:

    【解决方案2】:

    您仍然可以保留该函数,但不要使用 echoreturn,而是使用局部变量构建 HTML 输出并在最后返回它:

    <?php
    function listformat ($list) {
        $output = '<ul>';
        $listformat = explode("\n", $list);
        foreach ($listformat as $test => $line) {
            $output .= "<li>".$line."</li>";
        };
        return $output.'</ul>';
    };
    ?>
    

    现在您可以在任何地方使用您的函数,并回显返回的值或做任何您想做的事情:

    <?php
    echo(listformat($list));
    ?>
    

    【讨论】:

    • 这个函数什么都不输出。 $line) { $output = "
    • ".$line."
    • "; };返回$输出; };回声'
        ';列表格式($boo);回声'
      '; ?>
  • 你的函数没有使用$list。我也落入了同样的陷阱,因为 OP 也错了。你要爆$list
  • 好发现!证明我的命名约定很烂。还必须使用 echo 而不是 return。
  • 【解决方案3】:

    最简单的方法:

    function ln2ul($string) {
      return '<ul><li>' . str_replace("\n", '</li><li>', trim($string)) . '</li></ul>';
    }
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签