PHP, как обрезать каждую строку в heredoc (длинная строка) - PullRequest
10 голосов
/ 31 октября 2009

Я хочу создать функцию 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 ]

27 голосов
/ 31 октября 2009
function trimHereDoc($t)
 {
 return implode("\n", array_map('trim', explode("\n", $t)));
 }
9 голосов
/ 31 октября 2009
function trimHereDoc($txt)
{
    return preg_replace('/^\s+|\s+$/m', '', $txt);
}

^\s+ соответствует пробелу в начале строки, а \s+$ соответствует пробелу в конце строки. Флаг m говорит о необходимости многострочной замены, поэтому ^ и $ будут совпадать с любой строкой многострочной строки.

6 голосов
/ 31 октября 2009

Простое решение

<?php
$txtArray = explode("\n", $txt);
$txtArray = array_map('trim', $txtArray);
$txt = implode("\n", $txtArray);
4 голосов
/ 15 ноября 2014
function trimHereDoc($txt)
{
    return preg_replace('/^\h+|\h+$/m', '', $txt);
}

Пока \s+ удаляет пустые строки, сохраняет \h+ каждую пустую строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...