es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sustituyendo los caracteres “/\” con sed, desde dentro de php.

Genero contraseñas desde PHP (a través de una página web) usando shell_exec / dd / dev / urandom. Quiero eliminar los caracteres “/\” de mi contraseña generada.

Si hago una sustitución en mi línea sed con ‘s / [& quot; / ] /! G ”, el script no se ejecuta. Sin embargo, probé esto desde la línea de comandos como:

echo “this / is \ & \ quot; a \ test “| sed -e ‘s / [& amp; quot; / ] /! G’

Entonces obtengo el resultado correcto: esto! !es !a !test

Si elimino esta sección de reemplazo de mi línea sed, el script en PHP se ejecuta correctamente. ¿Cuál es el problema? Pensé que los caracteres dentro de los corchetes [] son seguros y no necesitan escaparse … ¿es ese el problema?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar en la cita de la línea sed dentro del código PHP. Es posible que deba escapar algunos de los caracteres en la línea sed para que sea interpretada correctamente por PHP.

    Para evitar el problema, puede intentar usar un conjunto diferente de delimitadores en la línea sed, como < > o {}. Esto le permitirá usar los caracteres / y ” sin necesidad de escaparlos.

    Por ejemplo, podría modificar la línea sed para que se vea así:

    sed -e 's<[&"/\\]>!>g'
    

    Esto debe reemplazar todas las ocurrencias de &, “, / y \ con ! en la cadena de entrada.

Comments are closed.