Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

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

#php #регулярные_выражения


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

$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

    


Ответы

Ответ 1



Чтобы удалить все пробелы в началах и концах строк, а также заменить множественные подряд стоящие пробелы на единичные, можно воспользоваться одним из следующих вариантов: Если речь только о пробелах, то надо заменять /^ +| +$|( ) +/m на $1. Обращаю внимание, что важен порядок проверок: http://ideone.com/M8wuSg - верно http://ideone.com/xBA5LS - неверно Если нужны любые побельные символы - то лучше сделать в 2 замены - первая - как у тебя, а вторая /^(?![\r\n]\s)+|(?![\r\n]\s)+$/m на пустую строку.

Ответ 2




Ответ 3



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

Комментариев нет:

Отправить комментарий