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

голоса
49

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

preg_replace(/[A-Z]/, <span class=\initial\>$1</span>, $str)
Задан 05/08/2008 в 01:35
источник пользователем
На других языках...                            


4 ответов

голоса
50

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

preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
Ответил 05/08/2008 в 01:36
источник пользователем

голоса
26

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

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

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

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

Ответил 28/08/2008 в 10:02
источник пользователем

голоса
8

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

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

Смотрите пример Flubba в.

Ответил 05/08/2008 в 02:39
источник пользователем

голоса
6

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

Ответил 23/06/2009 в 18:54
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more