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

时间:2009-10-31 18:20:33

标签: php string

我正在寻找一个可以修剪长字符串中每一行的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 个答案:

答案 0 :(得分:26)

function trimHereDoc($t)
 {
 return implode("\n", array_map('trim', explode("\n", $t)));
 }

答案 1 :(得分:9)

function trimHereDoc($txt)
{
    return preg_replace('/^\s+|\s+$/m', '', $txt);
}

^\s+匹配行开头的空格,\s+$匹配行尾的空格。 m标记表示要进行多行替换,因此^$将匹配多行字符串的任意一行。

答案 2 :(得分:6)

简单的解决方案

<?php
$txtArray = explode("\n", $txt);
$txtArray = array_map('trim', $txtArray);
$txt = implode("\n", $txtArray);

答案 3 :(得分:4)

function trimHereDoc($txt)
{
    return preg_replace('/^\h+|\h+$/m', '', $txt);
}

虽然\s+删除了空行,但每个空行保留\h+