Как я могу получить совпадения при использовании preg_replace в PHP?
-
08-06-2019 - |
Вопрос
Я пытаюсь взять заглавные буквы пары слов и обернуть их тегами 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.
См. пример Флаббы.
Используйте круглые скобки вокруг желаемого захвата.