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!!"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.