Re: [PHP-ES] str_replace y $_POST

[email protected] (Juan Manuel Acuña Barrera)
Newsgroups php.general.es
Message-ID <[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
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.