Foros del Web » Programando para Internet » PHP »

Dudas sobre str_replace

Estas en el tema de Dudas sobre str_replace en el foro de PHP en Foros del Web. He estado leyendo un poco y se dice que la funcion str_replace es mas rapida que la funcion eregi_replace , es cierto ? . Y ...
  #1 (permalink)  
Antiguo 25/08/2003, 13:18
 
Fecha de Ingreso: agosto-2003
Mensajes: 14
Antigüedad: 14 años, 3 meses
Puntos: 0
Dudas sobre str_replace

He estado leyendo un poco y se dice que la funcion str_replace es mas rapida que la funcion eregi_replace , es cierto ? .

Y otra cosa estoy utilizando la funcion para que me sustituya la comilla por un espacio :
Código PHP:

$nombre
str_replace ("'" "&nbsp"$nombre); 
pero me da este resultado por ejemplo poniendo migu'el

migu&nbspel

Estoy haciendo varios str_replace para evitar en todo lo posible la incursion de signos y comillas pero ya veis lo feo que queda , alguna solucion para que se quede el espacio en blanco o simplemente que la ignore?

Saludos.
  #2 (permalink)  
Antiguo 25/08/2003, 13:29
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Código PHP:
$nombrestr_replace ("'" ""$nombre); 
__________________
Manoloweb
  #3 (permalink)  
Antiguo 25/08/2003, 13:40
 
Fecha de Ingreso: agosto-2003
Mensajes: 14
Antigüedad: 14 años, 3 meses
Puntos: 0
Cita:
$nombre= str_replace ("'" , "", $nombre);
Gracias , juraria que fue lo primero que probe y no me funcionaba como deberia ¿? , pero lo he vuelto a probar ahora y funciona perfectamente

Ahora otra pregunta es muy trabajoso poner un str_replace para cada signo que no quiera insertar , ¿ no hay alguna forma de que solo admita letras y numeros sin tener que escribir tantas lineas ?

Gracias de nuevo.
  #4 (permalink)  
Antiguo 25/08/2003, 13:49
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años
Puntos: 68
Para eso existen las expreciones regulares, Te invito a que busques sobre ellas en el manual de PHP
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #5 (permalink)  
Antiguo 25/08/2003, 18:38
 
Fecha de Ingreso: agosto-2003
Mensajes: 14
Antigüedad: 14 años, 3 meses
Puntos: 0
He buscado sobre expresiones regulares en ese manual y te hablan de ereg y eregi pero no te dicen nada en concreto sobre lo que quiero hacer , que una variable solo pueda tener letras o numeros , descartando cualquier signo.

Lo que digo es factible o seria muy dificil ?

Si es facil a ver si alguien me puede guiar un poco o que me ponga algun ejemplo , si es dificil pues si sabeis alguna pagina donde lo explique como hacerlo tb os lo agradecere.

Saludos.
  #6 (permalink)  
Antiguo 25/08/2003, 19:27
Nok
 
Fecha de Ingreso: abril-2001
Mensajes: 302
Antigüedad: 16 años, 7 meses
Puntos: 0
Hola, en realidad es bastante sencillo lo que deseas hacer, aunque se me plantea una duda, tu que deseas?
- filtrar el texto de entrada quitandole esos caracteres?
- o validar la entrada? (en caso de contener alguno de los caracteres invalidos pedirla nuevamente)

En el primer caso te conviene utilizar str_replace() ya que son simplemente reemplazos, y no es necesario escribir tantas lineas como reemplazos necesites, sino que pasandole un array (como indica el manual ) puedes realizar todos los reemplazos de una vez.

Si es el segundo caso, simplemente aplicale una regla de validacion a traves de una expresion regular, algo asi:

if (ereg("caracteres validos", $entrada)) {
entrada ok
}
else {
entrar nuevamente
}

Simplemente con eso. Si el manual no es suficiente, te dejo este tutorial (en Ingles, pero facil de entender) en phpbuilder.com .

Saludos
Nok.
__________________
La casa de Noktemplate.
Zonaphp.com - Php en español.

¿Que esperas de NokTpl 2? Deja tu comentario.

Blog
Mas o menos asi .
  #7 (permalink)  
Antiguo 25/08/2003, 21:46
Avatar de MSDark  
Fecha de Ingreso: noviembre-2002
Ubicación: Talca VII región
Mensajes: 337
Antigüedad: 15 años
Puntos: 1
pero para los caracteres por ejemplo < " ' > y esas cosas correspondientes por ejemplo a HTML php pone para su uso las funciones htmlspecialchars() y htmlentities()


Saludos
__________________
DelirioLinux.. Software Libre y tecnología.. php también..
Saludos :arriba:
Usuario Linux #198486 y Ubuntu #12791
Gutsy Gibbon
  #8 (permalink)  
Antiguo 25/08/2003, 23:51
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Pero como lo que quiere (segun lo dice) es crear variables, de nada le serviría convertir los caracteres html, pues igual de invalido sería:

$más

que:

$m& aacute;s (obviamente sin el espacio)

Yo creo que la solución usando expresiones regulares puede ser la mejor.
__________________
Manoloweb
  #9 (permalink)  
Antiguo 26/08/2003, 09:06
 
Fecha de Ingreso: agosto-2003
Mensajes: 14
Antigüedad: 14 años, 3 meses
Puntos: 0
Gracias a todos , llevo pocos dias aprendiendo php y puede que no me explique bien en algunos mensajes.

Respecto a quitar los codigos html utilizo la funcion :

$nombre = strip_tags($_POST["nombre"]);

y de momento me va bien ya que los ignora.

Sobre lo otro lo que quiero , es que si meten algun signo que no sea numero o letra enn un formulario de error y vuelva al formulario para meter los datos correctamente , probare hacerlo como me ha dicho nok .

Pero a lo que me referia es que vi un articulo o un tutorial (ahora no lo encuentro :( ) donde en 1 o 2 lineas ejecutaban una sentencia donde comprobaban la variable que le pasa el formulario y si tenia algo mas que numeros y letras le daba error y lo echaba para atras , y no habia que meterles los signos a mano sino que utilizaban como un comando o una palabra que ya aglutinaba todo lo que no fuese letras o numeros , espero ahora haberme explicado mejor y que alguien sepa a la sentencia que me refiero.

Saludos.
  #10 (permalink)  
Antiguo 26/08/2003, 09:40
 
Fecha de Ingreso: agosto-2003
Mensajes: 14
Antigüedad: 14 años, 3 meses
Puntos: 0
Cita:
Si es el segundo caso, simplemente aplicale una regla de validacion a traves de una expresion regular, algo asi:

if (ereg("caracteres validos", $entrada)) {
entrada ok
}
else {
entrar nuevamente
}

Simplemente con eso.
Tengo un par de problemas con esa sentencia lo tengo puesto asi :

Código PHP:

if (ereg("abcdefghijklmnñopqrstuvwxyz" $nombre)) 
{
echo 
"ok";
}
else {

header("location: formulario.php");


El problema es que cuando escribo cualquier cosa , sea valida o no , se va al header ¿...? y al actualizar la pagina donde estan los registros veo que me los ha incluido de todas formas ¿...? sean validos o no.

Asi que como solucion provisional he puesto debajo del header la sentencia :

exit ;

Para que se acabe alli y no los inserte.

El segundo problema es que al poner lo de exit , no me deja poner ningun nombre que no sea la cadena exacta es decir solo me acepta "abcdefghijklmnñopqrstuvwxyz" , ni carlos , ni jose , etc , solo esa cadena.

Que puedo hacer ?

Saludos.
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:39.