Pergunta sobre preg_replace em PHP
-
07-07-2019 - |
Pergunta
No PHP o que é a diferença entre usar \ 1 ou US $ 1 quanto $ substituição em preg_replace ()?
Ambos trabalham e parecem fazer exatamente a mesma coisa, mas eu acho que eu estou faltando alguma coisa aqui.
Solução
Você não está faltando alguma coisa. Há apenas uma situação onde $ n só pode ser usado:
Ao trabalhar com um padrão de substituição onde uma referência anterior é imediatamente seguido por outro número (ou seja .: colocando um número literal imediatamente após um padrão combinado), você não pode usar o familiar notação \ 1 para o seu backreference. \ 11, por exemplo, iria confundir preg_replace (), uma vez que não sabe se deseja que o \ 1 backreference seguido por um literal 1, ou o backreference \ 11 seguido por nada. Neste caso, a solução é usar \ $ {1} 1. Isso cria um isolado $ 1 backreference, deixando a 1 como um literal.
Além disso, não há absolutamente nenhuma diferença entre os dois.