@Paul14

Как на PHP разделить склеенные буквы разного регистра?

Подключаюсь к Yandex почте через imap, получаю тело письма в формате html. Далее функцией strip_tags убираю теги.
$mailBody = strip_tags($body);
И получаю обратно строку такого вида: " Добрый день. Меня зовут ЕкатеринаХочу предложить вам некий продуктКогда будет с вами удобно связаться? "
Соответственно хочется "ЕкатеринаХочу " превратить в "Екатерина Хочу "
(или разделить не пробелом а переносом строки "\n" )

Возникает проблема на php с регуляркой. В js я бы написал /[а-я][А-Я]/g и получил бы метчи всех нужных мне негативных склеек. А на php не работает почему то.
Можете подсказать как правильно это сделать?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Регулярные выражения
preg_replace('/([а-яё])([А-ЯЁ])/u', '$1. $2', $str)

или

implode('. ', preg_split('/(?<=[а-яё])(?=[А-ЯЁ])/u', $str))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@humoured
Вы всё на свете найдёте в коробке с карандашами
Нужно не "разделять буквы разного регистра", а нормально обрабатывать разметку.
Если в разметке были символы переноса строки в виде html-сущностей (<br>), то нужно выполнить их преобразование до вызова функции strip_tags:
preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
Ответ написан
мне такой вариант кажется проще:
$body = str_replace('><', '> <', $body);
$mailBody = strip_tags($body);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы