代码之家  ›  专栏  ›  技术社区  ›  Yada

php如何修剪HereDoc中的每一行(长字符串)

  •  7
  • Yada  · 技术社区  · 15 年前

    我想创建一个PHP函数,它可以将每一行裁剪成一个长字符串。

    如:

    <?php
    $txt = <<< HD
        This is text.
              This is text.
      This is text.
    HD;
    
    echo trimHereDoc($txt);
    

    输出:

    This is text.
    This is text.
    This is text.
    

    是的,我知道trim()函数。只是不知道如何在像Heredoc这样的长字符串上使用它。

    4 回复  |  直到 10 年前
        1
  •  24
  •   gpilotino    15 年前
    function trimHereDoc($t)
     {
     return implode("\n", array_map('trim', explode("\n", $t)));
     }
    
        2
  •  9
  •   John Kugelman Syzygies    15 年前
    function trimHereDoc($txt)
    {
        return preg_replace('/^\s+|\s+$/m', '', $txt);
    }
    

    ^\s+ 匹配行首的空格,然后 \s+$ 匹配行尾的空白。这个 m 标志表示要进行多行替换,因此 ^ $ 将匹配多行字符串的任何行。

        3
  •  5
  •   erenon    15 年前

    简单解

    <?php
    $txtArray = explode("\n", $txt);
    $txtArray = array_map('trim', $txtArray);
    $txt = implode("\n", $txtArray);
    
        4
  •  3
  •   jokumer    10 年前
    function trimHereDoc($txt)
    {
        return preg_replace('/^\h+|\h+$/m', '', $txt);
    }
    

    同时 \s+ 删除空行,保留 \h+ 每条空行