Como posso obter as partidas ao usar preg_replace em PHP?

votos
49

Eu estou tentando agarrar as letras maiúsculas de um par de palavras e envolvê-los em tags span. Eu estou usando preg_replace para extrair e embalar fins, mas não é a saída de qualquer coisa.

preg_replace(/[A-Z]/, <span class=\initial\>$1</span>, $str)
Publicado 05/08/2008 em 01:35
fonte usuário
Em outras línguas...                            


4 respostas

votos
50

Você precisa colocar o padrão entre parênteses /([A-Z])/, como este:

preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
Respondeu 05/08/2008 em 01:36
fonte usuário

votos
26

\0 também vai coincidir com a expressão inteira combinado 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 termo de busca php.net/<whatever> para procurar a documentação rapidamente. Disse o documentação:

\ 0 ou US $ 0 refere-se ao texto correspondente a todo o padrão.

Respondeu 28/08/2008 em 10:02
fonte usuário

votos
8

A partir da documentação preg_replace em php.net:

substituição pode conter referências da forma \ n ou (desde o PHP 4.0.4) $ n, com a última forma sendo o preferido. Toda essa referência será substituído pelo texto capturado pelo padrão entre parênteses n'th.

Veja o exemplo de Flubba.

Respondeu 05/08/2008 em 02:39
fonte usuário

votos
6

Usar parênteses em torno de sua captura desejado.

Respondeu 23/06/2009 em 18:54
fonte usuário

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