Как правильно удалить лишние пробелы в строке?

485
20 августа 2017, 06:40

Как правильно удалить лишние пробелы в строке?
* - это пробел.

$text = '**Bla***bla**bla*blabla**bla*
**blabla***bla
*blabla';
echo preg_replace('/[^\S\r\n]+/', ' ', $text);

Вот результат:

*Bla*bla*bla*blabla*bla*
*blabla*bla
*blabla

Проблема в том что не могу удалят пробелы пере новый строкой типа такой. Как задать правило чтобы не оставлять пробел перед новый строкой?

Bla*bla*bla*blabla*bla*
blabla*bla
blabla
Answer 1

Чтобы удалить все пробелы в началах и концах строк, а также заменить множественные подряд стоящие пробелы на единичные, можно воспользоваться одним из следующих вариантов:

  1. Если речь только о пробелах, то надо заменять /^ +| +$|( ) +/m на $1.

    Обращаю внимание, что важен порядок проверок:
    http://ideone.com/M8wuSg - верно
    http://ideone.com/xBA5LS - неверно

  2. Если нужны любые побельные символы - то лучше сделать в 2 замены - первая - как у тебя, а вторая /^(?![\r\n]\s)+|(?![\r\n]\s)+$/m на пустую строку.

Answer 2
<?php
$text = '**Bla***bla**bla*blabla**bla*
**blabla';
echo preg_replace('/^([*]+)|([*]){2,}/m', '$2', $text);

Для удаления пробелов замените звездочки на знак пробела в регулярном выражении.

Тест http://sandbox.onlinephpfunctions.com/code/5de175fc06b16d77ddad968365bafe91c5c8d1bf

Answer 3

Регулярные выражения это здорово, но в данном случае это избыточно. Если вам необходимо в строке заменить какой либо символ на другой или убрать, без всяких условий. Используйте $ourString = str_replace(' ','',$ourString); эта функция работает быстрее чем функции работы с регулярными выражениями. Понятно,что на простеньком одноразовом скрипте это, чаще всего, не играет роли, но тем не менее не надо микроскопом гвозди забивать.

READ ALSO
не скачивается excel - PHP

не скачивается excel - PHP

почему после формирования файл не скачивается?

232
Как реализовать метки на сайте?

Как реализовать метки на сайте?

Тупой и странный вопросНужно создать обработку и создание меток на сайте наподобие как на этом сайте

375
Битрикс оплата счета частями

Битрикс оплата счета частями

Здравствуйте волнует такой вопрос, как реализовать оплату заказа частями, использую обработчик счетНапример сумма заказа 10 000 человек может...

245
Значение строки [дубликат]

Значение строки [дубликат]

На данный вопрос уже ответили:

185