PHP где строчные буквы соответствуют прописным буквам

#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