Estoy bastante familiarizado con sed en la shell de bash, por lo que debo hacer

cat $myfile | egrep $pattern | sed -e 's/$pattern/$replace/g'

mucho. Muy pocas veces me encuentro con que tengo que hacer el mismo tipo de «análisis de cadenas» dentro de PHP.

Así que mi pregunta es simple, ¿cuál es el equivalente de sed -e 's/$pattern/$replace/g' en PHP ?

Sé preg_match , preg_replace , pero no he utilizado /no familiarizado con ellos. Yo realmente apreciaría código de ejemplo en PHP. (la conversión de decir una $var = '_myString' a $newVar = 'getMyString' )

  • También hay str_replace() – cuando no se necesitan más avanzadas regexp.
  • gracias @EO2 : yo no creo que sobre str_replace() ! , dejaré de tratar y evitar regex siempre que puedo con str_replace() .
InformationsquelleAutor Sudhi | 2011-10-14

1 Comentario

  1. 8

    La preg_ funciones utiliza el mismo regexp biblioteca de Perl, por lo que se debe estar en su casa. Hay documentación de la sintaxis aquí.

    Por ejemplo:

    sed -e 's/$pattern/$replace/g'

    Sería algo así como:

    $output = preg_replace("/".$pattern."/", $replace, $input);

    El más común es el uso de / como delimitador, pero puedes utilizar otros caracteres, que puede ser útil si el patrón contiene un montón de barras, como es el caso de las direcciones url y las etiquetas xml. Usted también puede encontrar preg_quote útil.

    • gracias, voy a través de preg_* manual de PHP de las páginas, y preg_quote parece una práctica función. Puede usted/punto de explicar la ‘e’ de la bandera para PCRE ? Y ¿cómo se usa ? (Supongo que es ahí, en alguna parte en el PHP manuales …)
    • Nunca he usado la e modificador – yo prefiero usar preg_replace_callback, que en esencia hace lo mismo.
    • gracias, voy a ir a través de él, suena mucho más limpios y sencillos (escribir una expresión regular que en sí mismo es una tarea compleja, no hay necesidad de añadir una carga adicional de e modificador)
    • Recordar que en las nuevas versiones de php (5.3+) tienen soporte para funciones anónimas, que son perfectos para este caso.
    • sí, lo sé, no llamaron a los cierres ? O tal vez estoy equivocado, como yo vagamente recordar que las Funciones Anónimas y los Cierres no son exactamente lo mismo. Gracias de nuevo.
    • Es una especie de la misma cosa, sí. Un cierre es el tiempo de ejecución de la unión de una función anónima junto con una captura de la pila. Pensar en una función anónima como una clase y un cierre como un objeto. No exactamente, pero casi.

Dejar respuesta

Please enter your comment!
Please enter your name here