Foros del Web » Programando para Internet » PHP »

Como limpiar cadena PHP de caracteres extraos

Estas en el tema de Como limpiar cadena PHP de caracteres extraos en el foro de PHP en Foros del Web. Estoy dando mis primeros pasos en el PHP y vengo buscando ayuda aca donde estan los expertos. Ya se que hay cientos de temas parecidos ...
  #1 (permalink)  
Antiguo 09/01/2014, 15:20
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigedad: 10 aos, 6 meses
Puntos: 0
Mensaje Como limpiar cadena PHP de caracteres extraos

Estoy dando mis primeros pasos en el PHP y vengo buscando ayuda aca donde estan los expertos.

Ya se que hay cientos de temas parecidos pero no he visto solucion.

Lo que pasa es que tengo una web donde hay mas de 20000 entradas y estan aumentando todos los dias con el buscador obvio ayudo a los usuarios a encontrar lo que necesitan, tengo algo que me limpia lo que buscan en el formulario de ciertos caraceres y palabras que no me gustaria que estuvieran. Todo lo que los visitantes buscan se guarda en una base de datos pero hay caracteres y cosas que todavia no me limpia. No se mucho de php pero hice esto.

Cdigo PHP:
$palabra_busqueda=strip_tags($_GET['palabra']);
$palabra_busqueda=str_replace('-',' '$palabra_busqueda);
$palabra_busqueda=str_replace('ñ',''$palabra_busqueda);
$trozos=explode(" ",$palabra_busqueda);
$numero=count($trozos);

$palabra_busqueda=strtolower($palabra_busqueda);
$preposicioness = array("  "," 1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "," 11 "," 12 "," 13 "," 14 "," 15 "," 16 "," 17 ","{","}","[","]","=","&","?","<","<","<>","$","?","Content-Type:","MIME-Version:""Content-Transfer-Encoding:","Return-path:","Subject:","From:","Envelope-to:","To:","bcc:","cc:","UNION","DELETE","DROP","SELECT","INSERT","UPDATE","CREATE","TRUNCATE","ALTER","INTO","DISTINCT","GROUP BY","WHERE","RENAME","DEFINE","UNDEFINE","PROMPT","ACCEPT","VIEW","COUNT","HAVING","SCRIPT","'",'"',"*","phpMyAdmin","phpadmin","myadmin","sqladmin3","php","php","jsp",".",",","/","","","","","","","","","","","","","","","",".",";",":","","!","","?","","","","","asp","html","php","http://","http");
$palabra_busqueda str_replace($preposicioness,' '$palabra_busqueda); 
$sql=mysql_query("SELECT pin_search FROM search_dos WHERE pin_search='$palabra_busqueda'");
$tote=mysql_num_rows($sql);
if ((
$tote==0) AND ($numero<10)){
$fechaf=date("r");
mysql_query("INSERT INTO search_dos (`mon_id`,`mon_search`,`mon_funix`)
VALUES ('','$palabra_busqueda','$fechaf')"
);

Eso me limpia algunas cosas, no se de PHP pero eso me funciona pero en la base de datos se siguen guardando cosas como estas.

ƒ ’ €™ ƒ € ‚ „ ƒ ’ ‚ ƒ € ‚ ƒ ’ €™ ƒ € … ƒ ’ ‚ ƒ € ‚ ƒ ’ €™ ƒ € … ƒ ’ ‚ ƒ € ‚ as de a ƒ ’ €™ ƒ € ‚ „ ƒ ’ ‚ ƒ € ‚ ƒ ’ €™ ƒ

No se si hay gente mal intensionada y busca esto, o desde google que llegan visitas al historial de busquedas.

Tengo que agegar todos esos caracteres a $preposicioness o que otra solucion me dan.

Espero no sean groceros que por eso uno muchas veces se abstiene de publicar en estos foros.

Mil gracas por la ayuda
  #2 (permalink)  
Antiguo 09/01/2014, 15:34
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicacin: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigedad: 11 aos, 3 meses
Puntos: 528
Respuesta: Como limpiar cadena PHP de caracteres extraos

Primero te recomiendo convertir todas las cadenas a algn cdigo como utf8, para tratar de asegurar una correcta conversin, se puede tratar de detectar la codificacin de la cadena

$codificacion=mb_detect_encoding($cadena);//detecta codificacin de cadena
$cadena=iconv($codificacion,'UTF-8//IGNORE',$cadena);//convertimos a utf la cadena

Otra mejor opcin es que si slo vas a aceptar ciertos caracteres (letras, nmeros, signos) filtres las cadenas de modo que cualquier cosa que no sea un caracter aceptable la elimine.

No obstante, creo que es an mejor escapar correctamente tus entradas de datos (una buena prctica sera con sentencias preparadas) de modo que no suponga ningn peligro estos datos.

Y si es por robots que puedan meter datos a tu web, un sistema de captcha.
  #3 (permalink)  
Antiguo 10/01/2014, 05:02
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicacin: Argentina - Capital Federal
Mensajes: 382
Antigedad: 10 aos, 1 mes
Puntos: 27
Respuesta: Como limpiar cadena PHP de caracteres extraos

probaste con esto?
Cdigo PHP:
mysql_query("SET NAMES utf8"); 

Etiquetas: buscador-php, programacionweb
Atencin: Ests leyendo un tema que no tiene actividad desde hace ms 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 14:57.