Ответ 1
function trimHereDoc($t)
{
return implode("\n", array_map('trim', explode("\n", $t)));
}
Я ищу, чтобы создать функцию 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.
function trimHereDoc($t)
{
return implode("\n", array_map('trim', explode("\n", $t)));
}
function trimHereDoc($txt)
{
return preg_replace('/^\s+|\s+$/m', '', $txt);
}
^\s+
соответствует пробелу в начале строки, а \s+$
соответствует пробелу в конце строки. Флаг m
говорит, что он выполняет многострочную замену, поэтому ^
и $
будут совпадать с любой строкой многострочной строки.
Простое решение
<?php
$txtArray = explode("\n", $txt);
$txtArray = array_map('trim', $txtArray);
$txt = implode("\n", $txtArray);
function trimHereDoc($txt)
{
return preg_replace('/^\h+|\h+$/m', '', $txt);
}
Пока \s+
удаляет пустые строки, сохраняет \h+
каждую пустую строку