2010-09-06 13 views

Respuesta

21

Al puerto ereg_replace a preg_replace que necesita para poner la expresión regular entre un par de delimitador

También su regx se [\] es inválida que se utilizará para preg_replace como el \ está escapando el cierre clase de char ]

El puerto correcto es

preg_replace('/[\\\]/','',$theData) 

Asimismo, puesto que la clase carbón tiene solamente con un carácter que no hay necesidad real de clase carbón que pueda decir:

preg_replace('/\\\/','',$theData) 

Dado que usted es reemplazar un solo char, usando expresiones regulares para que esto no se recomienda . Usted debe utilizar un reemplazo de texto simple utilizando str_replace como:

str_replace('\\','',$data); 
+1

. '/ \\\ /' dará como resultado el escape de la barra diagonal por preg_replace, necesita 4 barras diagonales inversas –

+3

@Yanick simplemente inténtelo –

+0

@Yanick, no, no lo hará. 'preg_replace' lo ve como/\\ /, lo cual decodifica como una barra invertida literal dentro de los delimitadores. Tenga en cuenta que '/ \\\\' 'es * también * correcto, porque \\ y \ pueden codificar una barra invertida en un literal de cadena. t \/no es una cadena de escape. –

2
str_replace("\\","",$theData); 

Pero en serio dudo que necesita que reemplazan a todos. lo más probable es que necesite alguna otra operación.
¿Para qué sirve esta sustitución?

0
preg_replace("/\\\/", "", $theData); 
0

He utilizado esta sed para reemplazar automáticamente ereg_replace por preg_replace y poner las barras requeridas en No prevé el \" en la primera expresión regular

sed -i 's#ereg_replace("\([^"]*\)"#preg_replace("/\1/"#g' *.php 
Cuestiones relacionadas