Foros del Web » Programando para Internet » PHP »

Como limpiar cadena PHP de caracteres extraños

Estas en el tema de Como limpiar cadena PHP de caracteres extraños 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, 16:20
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 15 años, 9 meses
Puntos: 0
Mensaje Como limpiar cadena PHP de caracteres extraños

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.

Código 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, 16:34
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Como limpiar cadena PHP de caracteres extraños

Primero te recomiendo convertir todas las cadenas a algún código como utf8, para tratar de asegurar una correcta conversión, se puede tratar de detectar la codificación de la cadena

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

Otra mejor opción es que si sólo vas a aceptar ciertos caracteres (letras, números, signos) filtres las cadenas de modo que cualquier cosa que no sea un caracter aceptable la elimine.

No obstante, creo que es aún mejor escapar correctamente tus entradas de datos (una buena práctica sería con sentencias preparadas) de modo que no suponga ningún 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, 06:02
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 15 años, 4 meses
Puntos: 27
Respuesta: Como limpiar cadena PHP de caracteres extraños

probaste con esto?
Código PHP:
mysql_query("SET NAMES utf8"); 

Etiquetas: buscador-php, programacionweb
Atención: Estás leyendo un tema que no tiene actividad desde hace más 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 07:22.