Como posso obter as correspondências ao usar preg_replace em PHP?
-
08-06-2019 - |
Pergunta
Estou tentando pegar as letras maiúsculas de algumas palavras e envolvê-las em tags span.estou usando preg_replace para fins de extração e empacotamento, mas não produz nada.
preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
Solução
Você precisa colocar o padrão entre parênteses /([A-Z])/
, assim:
preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
Outras dicas
\0
também corresponderá a toda a expressão correspondente sem fazer uma captura explícita usando parênteses.
preg_replace("/[A-Z]/", "<span class=\"initial\">\\0</span>", $str)
Como sempre, você pode ir para php.net/preg_replace ou php.net/<qualquer termo de pesquisa> para pesquisar a documentação rapidamente.Cite a documentação:
\0 ou $0 refere-se ao texto correspondente a todo o padrão.
De documentação preg_replace em php.net:
substituição pode conter referências do formulário n ou (desde o PHP 4.0.4) $ n, com a última forma sendo a preferida.Todas essas referências serão substituídas pelo texto capturado pelo N'th Particlehized Pattern.
Veja o exemplo de Flubba.
Use parênteses em torno da captura desejada.