Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление одиночных символов 
V
    Опции темы
stalker2000
Дата 5.5.2015, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 29.7.2010

Репутация: нет
Всего: нет



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

$s = 'Curabitur semper, ex ut congue 1 2 3 4 aliquam, elit lacus rhoncus ligula, sed interdum lectus risus nec est.
Nullam sit amet cursus magna. Donec erat a b c d e f sapien, laoreet hendrerit consectetur, gravida justo.';

echo $s, '<br><br>', preg_replace('/\s+(.{1})\s+/', ' ', $s);

получаю удаление искомых символов через один:
Код

Curabitur semper, ex ut congue 2 4 aliquam, elit lacus rhoncus ligula, sed interdum lectus risus nec est.
Nullam sit amet cursus magna. Donec erat b d f sapien, laoreet hendrerit consectetur, gravida justo.

Я так понимаю, проблема в захвате пробелов, но как её обойти?  smile 

Это сообщение отредактировал(а) stalker2000 - 5.5.2015, 10:06
PM MAIL   Вверх
ksnk
Дата 5.5.2015, 11:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 12
Всего: 386



Дык! Замена по регулярке работает примерно так - ищется первое совпадение по регулярке, потом от первого символа, не попавшего в регулярку, поиск с заменой повторяются. Тоесть если есть несколько одиночных символов - будет заменятося каждый 2-й.

Нужно использовать `assertions`.
Например - так 
Код

echo $s, '<br><br>', preg_replace('/\s+(.{1})(?=\s)/', ' ', $s);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
stalker2000
Дата 5.5.2015, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 29.7.2010

Репутация: нет
Всего: нет



О, пасиб, не знал что есть такая штука. Век живи, век учись  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.1150 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.