- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Хотелось бы заменять любой знак препинания в конце на точку, или просто добавлять точку, если никакого знака не было.
Возвращает "text..". Почему две точки в конце и как побороть?
PS. вариант preg_replace('/\pP$/u','','text,').'.'; не подходит, надо сделать одним регекспом.
$var=str_replace('..','.',$var);
в чём проблема то?
Просто если точка в конце уже есть, он подставляет ещё одну.
в чём проблема то?
Проблема в том, что в конце может быть не только точка, а любой знак препинания, так что использовать str_replace не получится. Ну а обрабатывать результат preg_repplace'а еще одной ф-ей не интересно
Просто если точка в конце уже есть, он подставляет ещё одну.
Он как бы не должен: я прошу его заменить точку в конце (если есть) И конец строки на точку.
Так правильно работает, за исключением того, что пропускает строки без знаков препинания в конце..
Хотелось бы заменять любой знак препинания в конце на точку, или просто добавлять точку, если никакого знака не было.
как вариант: принудительно добавлять точку в конце строки и избавится в регулярке от '?'
еще последний пробел нужно учитывать: или trim($st) или расширить регулярку.
upd: учет последнего пробела или табуляции
как вариант: принудительно добавлять точку в конце строки и избавится в регулярке от '?'
Должна же регулярка это уметь.. Используя доп. функции (конкатенацию) решить можно, но хочется без них
Опять фейшунисты, откуда они только берутся...
Почему две точки в конце и как побороть?
Потому что там непонятно сколько символов указано, по моему один или ноль. [\pP]*$
Потому что там непонятно сколько символов указано, по моему один или ноль. [\pP]*$
Не совсем понял о чем вы, но preg_replace('/[\pP]*$/u','.','text,'); - результат тотже.
preg_replace('/[,.!\?]$/','.','text,');
не будет работать на тексте "text" (без запятой в конце)
Ну вообщем понятно почему, шаблон применяться к каждому найденному соответствию, а метасимволы * и ? еще и не задает конкретного условия - поэтому в конце строке будет добавятся еще один символ.
Хотите "одним регкапсом" юзайте - echo preg_replace('/(?:\pP+|(\p{^P}))$/', '$1.', 'dsfsdf,');