Re: [PHP-ES] str_replace y $_POST
[email protected] (José Yepes)
| Newsgroups | php.general.es |
|---|---|
| Message-ID | <[email protected]> |
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!!"