#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); эта функция работает быстрее чем функции работы с регулярными выражениями. Понятно,что на простеньком одноразовом скрипте это, чаще всего, не играет роли, но тем не менее не надо микроскопом гвозди забивать.
Комментариев нет:
Отправить комментарий