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

StackOverflow https://stackoverflow.com/questions/1746

Вопрос

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

preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
Это было полезно?

Решение

Вам нужно поместить шаблон в скобки /([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/<любой поисковый запрос> для быстрого поиска в документации.Цитирую документацию:

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

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

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

См. пример Флаббы.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top