Foros del Web » Programando para Internet » PHP »

Error con preg_replace

Estas en el tema de Error con preg_replace en el foro de PHP en Foros del Web. Hola, a ver si me pueden ayudar, por favor !!! ya estoy desesperado y no encuentro solución: alguien sabe por que me aparece este error ...
  #1 (permalink)  
Antiguo 15/09/2005, 02:00
 
Fecha de Ingreso: mayo-2002
Ubicación: Toluca
Mensajes: 229
Antigüedad: 15 años, 6 meses
Puntos: 2
Error con preg_replace

Hola, a ver si me pueden ayudar, por favor !!! ya estoy desesperado y no encuentro solución:

alguien sabe por que me aparece este error ??

Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 0 in /home/kynneth/public_html/tienda/checkout_process.php on line 77

lo que tengo es:

function quitainvalidos($palabra){
$patrones=array("?","€","Ç");
$remplazo=array(" "," "," ");
$i=0;
foreach ($patrones as $patron){
$tr=preg_replace("/$patron/","$remplazo[$i]",$palabra); // aqui me marca el error
if($palabra != $tr){
$palabra = $tr;
$i=0;
}
$i++;
}
return $tr;
}


Ahora bien:

si cambio estas líneas:
$patrones=array("?","€","Ç");
$remplazo=array(" "," "," ");

por estas :
$patrones=array("€","Ç");
$remplazo=array(" "," ");

ya no me marca el error !!!
por que ???

el problema es que $patrones debe contener como 30 caracteres
pero no los puse todos, para el ejemplo ;)


Espero me puedan ayudar, me urge !!!

mil gracias de antemano
  #2 (permalink)  
Antiguo 15/09/2005, 02:25
 
Fecha de Ingreso: mayo-2002
Ubicación: Toluca
Mensajes: 229
Antigüedad: 15 años, 6 meses
Puntos: 2
Siempre pasa lo mismo ..... en los detalles de errores más faciles, se pierde mucho mas tiempo ....
creo que ya tengo sueño .. debo ir a dormir y descansar

el problema es que me faltaba poner el caracter \ antes
  #3 (permalink)  
Antiguo 15/09/2005, 04:03
 
Fecha de Ingreso: mayo-2002
Ubicación: Toluca
Mensajes: 229
Antigüedad: 15 años, 6 meses
Puntos: 2
no puedo !!! .. pensé que era mas simple ...
espero alguien me pueda dar un cable para seguirn con esto

quiero validar que ninguna de mis variables contengan estos caracteres:

\ ~ ` ! @ # $ % * ^ & ( ) = + { } [ ] | ; : ' , . < > / ? " ñ Ñ


con algunos funciona .. pero con otros no funciona .. no se por que !!!

AYUDA PORFAVOR !!!!

Mil gracias !!
  #4 (permalink)  
Antiguo 15/09/2005, 08:18
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
ojo que ? es un caracter especial y tiene significado dentro de una expresión regular. Quiere decir, 0 o 1 de lo que tengo a la izquierda. Creo que primero que nada, tendría que leer bien la documentación de expresiones regulares en php.net: http://www.php.net/manual/es/referen...ern.syntax.php y la docu de preg_replace para saber cómo armar expresiones regulares.

Lo que estás haciendo, podrías hacerlo bien con str_replace en vez de preg_replace, para no embarullarte con las expresiones regulares, que además por como lo estás haciendo no lo estás precisando.

Una pregunta, ¿seguro que eso es lo que quieres hacer? ¿Quieres sacar esos caracteres o más bien quieres validar que la cadena sea solamente alfanumérica?
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #5 (permalink)  
Antiguo 15/09/2005, 08:21
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
tienes además un error de lógica en tu código, $i debes incrementarlo siempre para pasar al siguiente par patrón reemplazo, bahhhh! en realidad no tiene sentido porque tus reemplazos son siempre espacios. ¿Para qué estás usando un array de reemplazos si todos los reemplazos son lo mismo? Más valdría poner:

$tr=str_replace("$patron"," ",$palabra);
if($palabra != $tr){
$palabra = $tr;
}
$i++
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #6 (permalink)  
Antiguo 15/09/2005, 08:40
 
Fecha de Ingreso: julio-2005
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
¿Qué te parece ésto?

Código PHP:
<?php
$palabra 
"\ ~ ` ! @ # $ % * ^ & ( ) = hola + { } [ ] | ; : ' , . < > / ? \" ñ Ñ";

echo 
strtr($palabra,'\~`[email protected]#$%*^&()=+{}[]|;:\',.<>/?\"ñÑ','                                 ');
?>
Saludos.
  #7 (permalink)  
Antiguo 15/09/2005, 09:39
 
Fecha de Ingreso: mayo-2002
Ubicación: Toluca
Mensajes: 229
Antigüedad: 15 años, 6 meses
Puntos: 2
Pues si !!!
exactamente !!!
esto ultimo es lo que necesitaba.....
mil gracias !!! solo un par de lineas resolvieron mi problema !!! que mal estoy :S

mil gracias !! ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:41.