#php #preg-replace #preg-match #preg-split
#php #preg-replace #preg-совпадение #preg-split
Вопрос:
Я пытаюсь поставить перед каждым символом, который встречается с прописной буквой. Чего я добился, так это:
$str = "Rating: goodHelps control sebum production Rating: averagePrevents the development of microorganisms in cosmetics Rating: badCan be allergenic Rating: badToxic to cell division";
$string = preg_replace('/([a-z])([A-Z])/', "</br>", $str);
print_R($string);
Результат:
Рейтинг: goo
elp контролируют выработку кожного сала.
восстанавливает развитие микроорганизмов в косметике Рейтинг: ba
рейтинг аллергенности: ba
оксид для деления клеток
Он удаляет первый и последующий символ, как вы можете видеть. Мне нужен полный текст с a .
Ответ №1:
Вы хотите использовать обратные ссылки на то, что вы захватили при замене. Первая группа захвата ()
$1
— это, а вторая — это $2
:
$string = preg_replace('/([a-z])([A-Z])/', '$1</br>$2', $str);
Ответ №2:
Вы можете использовать поиск, это вставляет </br>
между строчными и прописными символами.
$str = "Rating: goodHelps control sebum production Rating: averagePrevents the development of microorganisms in cosmetics Rating: badCan be allergenic Rating: badToxic to cell division";
echo preg_replace('/(?<=[a-z])(?=[A-Z])/', "</br>", $str);
Вывод:
Rating: good</br>Helps control sebum production Rating: average</br>Prevents the development of microorganisms in cosmetics Rating: bad</br>Can be allergenic Rating: bad</br>Toxic to cell division