Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

159
Visualizações
No se puede reemplazar `$_` por otra cosa en preg_replace()

Estoy investigando, pero no soy capaz de encontrar la solución a esto.

La idea es reemplazar los caracteres $_ de una cadena con otra cosa. Si elimina el signo de dólar de la variable $search , funciona (pero no de la manera deseable).

No funciona porque el signo de dólar es un carácter especial, pero no encuentro cómo evitarlo.

Esto es lo que tengo:

 $search = '$_'; // replace to '_' OR '[$_]' it returs "$1" instead of "1" $replace = 1; $regex = '#".*?"(*SKIP)(*FAIL)|\b' . $search . '\b#s'; $fullInput = '"$_" $_'; $r = preg_replace([$regex], $replace, $fullInput); echo $r . PHP_EOL; // Output with current code : "$_" $_ // Output with '_' or '[$_]': "$_" $1 // // Expected result: "$_" 1

A tener en cuenta, si el texto está entre comillas, no se debe reemplazar.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede usar esta expresión regular para la búsqueda:

 "[^\\"]*(?:\\.|[^\\"]*)*"(*SKIP)(*F)|\$_

y reemplácelo con [$0]

Patrón antes | coincide con una cadena entre comillas dobles que permite una comilla escapada en el medio. Patrón después de | coincide con $_ .

Demostración RegEx

Detalles RegEx:

  • "[^\\"]*(?:\\.|[^\\"]*)*" : Coincide con una cadena entre comillas dobles. Permitimos personajes escapados en este partido.
  • (*SKIP)(*F) : Saltar y fallar este partido
  • | : O
  • \$_ : coincide con el texto literal $_

Código:

 $search = '$_'; $replace = '[$0]'; $regex = '/"[^\\"]*(?:\\.|[^\\"]*)*"(*SKIP)(*F)|' . preg_quote($search, '/') . '/'; $fullInput = '"$_" $_'; $r = preg_replace($regex, $replace, $fullInput); echo $r . PHP_EOL;

Producción:

 "$_" [$_]
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda