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)
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top