Re: [PHP-ES] str_replace y $_POST
[email protected] (hahmael)
| Newsgroups | php.general.es |
|---|---|
| Message-ID | <[email protected]> |
"Al que no le gusta el caldo se le dan dos tazas"..pero como a mi si me gusta y sobre todo PHP todas sus respuestas me han servido y algunas cosas nuevas para mi que estoy mirando. Muchas gracias a todos, ya esta solucionado. Gracias! 2010/7/30 Juan Manuel Acuña Barrera <[email protected]> > > El 30/07/2010, a las 17:31, José Yepes escribió: > > > A mi se me ocurren dos formas: > > > > 1 - Usa un ciclo foreach, recorriendo el array $quitar, para buscar cada > uno > > de estos caracteres y quitarlo > > > > EJEMPLO > > > > $fragmento = $_POST["dir"]; > > > > foreach($quitar as $noValido) > > { > > if(strpos($fragmento, $noValido) !== FALSE) > > { > > $fragmento = str_replace($noValido, "", $fragmento); > > } > > } > > > > O la segunda, que te evita el uso de ciclos: usa strtr(), ya que hace > > reemplazos > > en base a un arreglo de reemplazos que le mandes. Para esto harías una > > modificacion a tu arreglo, como la mostraré a continuación; > > > > $quitar= array("-"=>"", " "=>"", "'"=>"", "?"=>"", "+"=>"", "-"=>"", > > "_"=>"", > > "^"=>"", "*"=>"", "!"=>"", "%"=>"", "¿"=>"", "¡"=>"", "¨"=>"","´"=>"", > > "ç"=>"", > > "{"=>"", "}"=>"", ":"=>"", "."=>"", ";"=>"", "("=>"", ")"=>"", "#"=>"", > > "|"=>"", "&"=>"", > > "$"=>"", "="=>"", "<"=>"", ">"=>""); //caracteres a Eliminar > > > > Con esto, la funcion strtr() usa los indices del arreglo de reemplazo > como > > los > > caracteres a buscar, y los valores del arreglo como los reemplazos que > > quieras > > hacer ;) sólo restaría hacer esto: > > > > $fragmento = $_POST["dir"]; > > > > $fragmento = strtr($fragmento, $quitar); > > > > > > > > Espero que esto resuelva tu problema. Un gran saludo para tí. > > > > > > > > > > El 30 de julio de 2010 16:42, hahmael <[email protected]> escribió: > > > >> Hola a todos recibo por post una serie de numero a veces con caracteres > que > >> no deseo, estoy tratando de utilizar str_replace para reemplazar esos > >> caracteres o eliminarlos antes de hacer la insercion a la BD pero hasta > el > >> momento mis intentos han sido infructuosos, me gustaria alguien me diga > si > >> estoy cometiendo un error, ejemplo de codigo: > >> > >> > >> ######### Recibo por POST la siguiente cadena --> 44"#B 8 <--- y > >> solo > >> deseo dejar letras y numeros > >> > >> ######### Hago array con caracteres a reemplazar > >> > >> $quitar= array("-", " ", "'", "?", "+", "-", "_", "^", "*", "!", "%", > "¿", > >> "¡", "¨","´", "ç", "{", "}", ":", ".", ";", "(", ")", "#", "|", "&", > "$", > >> "=", "<", ">"); //caracteres a Eliminar > >> > >> > >> ######### Finalmente trato de hacer el reemplazo buscando obtener esto > ---> > >> 44B8 <--- pero no lo Logro! > >> > >> $fragmento= str_replace( $quitar, "", $_POST['dir'] ); > >> > >> devuelve -----> 44"#B 8 > >> > >> > >> existe alguna otra alternativa?, que estoy realizando mal?, deseo > eliminar > >> en una sola funcion espacios y caracteres no Numericos o Alfabeticos. > >> > >> De antemano Gracias. > >> > >> -- > >> Agradecido. > >> > >> Hahmael Tâher. > >> > > > > > > > > -- > > "No te esfuerzes tanto. Las mejores cosas de la vida suceden cuando menos > te > > las esperas!!" > > > Hola Hahmael: > > A ver, revisando tu código original encontré que te falta incluir en el > arreglo "\"" para que te quite las comillas, poniendo eso y ordenando el > arreglo, me funciona perfecto. > > $cadena='44"#B 8'; > echo "cadena: $cadena <br>"; > $quitar= array("-", > " ", > "'", > "?", > "+", > "-", > "_", > "^", > "*", > "!", > "%", > "¿", > "¡", > "¨", > "´", > "ç", > "{", > "}", > ":", > ".", > ";", > "(", > ")", > "#", > "|", > "&", > "$", > "=", > "<", > ">", > "\""); > $fragmento= str_replace( $quitar, "", $cadena ); > echo "fragmento: $fragmento <br>"; > > Si quieres prueba lo anterior y nos dices. > > Saludos! > > Juan Manuel Acuña > > > > -- > PHP Spanish Localization Talk Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Agradecido. Hahmael Tâher.