Как я могу получить совпадения при использовании preg_replace в PHP?

Я пытаюсь захватить заглавные буквы из нескольких слов и обернуть их тегами span. Я использую preg_replace для извлечения и обертывания, но это ничего не выводит.

preg_replace("/[AZ]/", "<span class=\"initial\">$1</span>", $str) 

Вам нужно поместить шаблон в круглые скобки /([AZ])/ , например:

 preg_replace("/([AZ])/", "<span class=\"initial\">$1</span>", $str) 

\0 также будет соответствовать всему согласованному выражению без явного захвата с использованием скобок.

 preg_replace("/[AZ]/", "<span class=\"initial\">\\0</span>", $str) 

Как всегда, вы можете перейти на php.net/preg_replace или php.net/<whatever search term>, чтобы быстро найти документацию. Введите документацию:

\ 0 или $ 0 относится к тексту, сопоставляемому всем шаблоном.

Из документации preg_replace на php.net:

замена может содержать ссылки на форму \ n или (начиная с PHP 4.0.4) $ n, причем последняя форма является предпочтительной. Каждая такая ссылка будет заменена текстом, записанным в n-м скобках.

См. Пример Флубба.

Используйте круглые скобки вокруг желаемого захвата.