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

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

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

Ответов (4)

Решение

Вам нужно заключить узор в круглые скобки /([A-Z])/, например:

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

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

preg_replace("/[A-Z]/", "<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-м шаблоном в скобках.

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

Заключите желаемый снимок в круглые скобки.