Как обрезать пробел в начале и конце каждой новой строки с помощью PHP или регулярных выражений - PullRequest
2 голосов
/ 07 сентября 2011

Как обрезать пробелы в начале и конце каждой новой строки с помощью PHP или регулярных выражений?

Например,

$text = "similique sunt in culpa qui officia 

     deserunt mollitia animi, id est 

  laborum et dolorum fuga   

";

Должно быть,

$text = "similique sunt in culpa qui officia

deserunt mollitia animi, id est

laborum et dolorum fuga
";

Ответы [ 6 ]

13 голосов
/ 07 сентября 2011

Использование регулярных выражений, безусловно, быстрее для этой задачи. Но если вам нравятся вложенные функции, это также будет trim пробел из всех строк:

$text = join("\n", array_map("trim", explode("\n", $text)));
4 голосов
/ 07 сентября 2011
<textarea style="width:600px;height:400px;">
<?php

$text = "similique sunt in culpa qui officia 

     deserunt mollitia animi, id est 

  laborum et dolorum fuga   

";

echo preg_replace("/(^\s+|\s+$)/m","\r\n",$text);

?>
</textarea>

Я добавил тестера, чтобы вы могли ясно видеть новые строки

0 голосов
/ 12 апреля 2015

Здесь еще одно регулярное выражение, которое удаляет пробелы в начале и конце каждой строки.

$text = preg_replace('/^[\t ]+|[\t ]+$/m', '', $text);

См. / м модификатор

0 голосов
/ 06 января 2015

Вы можете использовать любой горизонтальный символ пробела и переключатель preg_replace, чтобы заменить их ничем:

$text = trim(preg_replace('/(^\h+|\h+$)/mu', '', $text));

Если вам нужно сохранить пробелы в файле ned, удалите trim или замените на ltrim function

0 голосов
/ 29 июня 2013

Решение Марио работает хорошо (спасибо за это Марио - спас мой день).Может быть, кто-то может объяснить, почему он превратил мои более поздние проверки для кросс-платформенных совместимых разрывов строк, таких как

    (strstr($text, PHP_EOL))

, в FALSE, даже если разрывы строк существовали."чтобы PHP_EOL исправил проблему:

    $text = join(PHP_EOL, array_map("trim", explode(PHP_EOL, $text)));
0 голосов
/ 07 сентября 2011

1-е решение:

Разделите исходную строку с символом новой строки с взорвите , используйте trim на каждом токене, затем восстановите исходную строку ...

2-е решение:

Заменить этим регулярным выражением \ s * \ n \ s * на \ n на preg_replace .

...