Как правильно удалить лишние пробелы в строке?
* - это пробел.
$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
Чтобы удалить все пробелы в началах и концах строк, а также заменить множественные подряд стоящие пробелы на единичные, можно воспользоваться одним из следующих вариантов:
Если речь только о пробелах, то надо заменять /^ +| +$|( ) +/m на $1.
Обращаю внимание, что важен порядок проверок:
http://ideone.com/M8wuSg - верно
http://ideone.com/xBA5LS - неверно
Если нужны любые побельные символы - то лучше сделать в 2 замены - первая - как у тебя, а вторая /^(?![\r\n]\s)+|(?![\r\n]\s)+$/m на пустую строку.
<?php
$text = '**Bla***bla**bla*blabla**bla*
**blabla';
echo preg_replace('/^([*]+)|([*]){2,}/m', '$2', $text);
Для удаления пробелов замените звездочки на знак пробела в регулярном выражении.
Тест http://sandbox.onlinephpfunctions.com/code/5de175fc06b16d77ddad968365bafe91c5c8d1bf
Регулярные выражения это здорово, но в данном случае это избыточно. Если вам необходимо в строке заменить какой либо символ на другой или убрать, без всяких условий. Используйте $ourString = str_replace(' ','',$ourString); эта функция работает быстрее чем функции работы с регулярными выражениями. Понятно,что на простеньком одноразовом скрипте это, чаще всего, не играет роли, но тем не менее не надо микроскопом гвозди забивать.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости