Foros del Web » Programando para Internet » PHP »

Ayuda con caracteres especiales

Estas en el tema de Ayuda con caracteres especiales en el foro de PHP en Foros del Web. Hola a todos. Verán, tengo una variable que contiene texto (500 kb de texto aproximadamente), y este texto contiene gran cantidad de caracteres especiales, como ...
  #1 (permalink)  
Antiguo 07/07/2009, 16:35
 
Fecha de Ingreso: mayo-2009
Mensajes: 16
Antigüedad: 15 años
Puntos: 0
Ayuda con caracteres especiales

Hola a todos.

Verán, tengo una variable que contiene texto (500 kb de texto aproximadamente), y este texto contiene gran cantidad de caracteres especiales, como fórmulas aritméticas y otras. Lo que estoy intentando hacer es limpiar esta cadena, de manera que solo contenga letras, números y algunos simbolos.

Estoy usando lo siguiente:

Código PHP:
$content htmlentities($content);
$content ereg_replace("[^A-Za-z0-9 &;%#]"""$content); 

con esto rescato solamente letras con y sin acento, números, espacios y algunos símbolos, pero esto demora demasiado en procesar, considerando que estoy metido dentro de un bucle y pasará cientos de veces por aquí.

Habrá alguna forma de agilizar esto? Tampoco me sirve str_replace, pues desconozco que caracter aparecerá. La idea es filtrar la cadena y que ignore todo caracter que no cumpla con ese patrón.

Saludos y gracias por leer.
  #2 (permalink)  
Antiguo 07/07/2009, 19:05
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con caracteres especiales

No hay forma de hacerlo que no sea usando expresiones regulares. Prueba usando funciones PCRE, como preg_replace(). En algún lado leí que el proceso es más ágil.

Ahora, digo yo, es necesario hacer ese bucle tan largo? Talvez tienes un error de lógica en tu aplicación. Se supone que esos datos se van registrando uno a uno, o no? Tal vez de una base de datos. Entonces, lo más práctico es hacer el reemplazo a ese nivel, y no al extraer todo para luego hacer un reemplazo masivo. Revisa el proceso que estás armando, tal vez puedas optimizarlo enormemente

  #3 (permalink)  
Antiguo 07/07/2009, 19:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda con caracteres especiales

Porque no lo limpias antes de insertar el texto asi al mostrarlo no vas a tener ese problema.

Saludos.
  #4 (permalink)  
Antiguo 08/07/2009, 08:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 16
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con caracteres especiales

Lo que pasa es que estoy creando un indexador de PDF's con XPDF y zend_search_lucene.

Es algo similar a guardar y buscar datos en MySQL, salvo que en vez de una base de datos se utiliza un archivo índice.

En un directorio tengo X archivos PDF, los cuales abro y extraigo el texto (que se almacena en la variable $content). Hasta ahi no hay mayores problemas, salvo que al insertar en el indice esta variable, el texto se me corta donde aparecen ciertos caracteres como los usados en aritmética.

Por ejemplo, supongamos que en un PDF tengo el siguiente párrafo, y que el ® es el caracter que me produce problemas:

El veloz murciélago hindú
comía feliz ® cardillo y kiwi
blablabla (...)


Ahora, si realizo una búsqueda en el índice con la palabra "veloz" me arrojaría este documento como resultado, lo mismo pasaría si busco "hindú" o "felíz"... pero si busco por "cardillo" o "kiwi" no me arroja nada, pues me está indexando hasta ®, y lo demás no.

Por eso no me sirve usar str_replace() o preg_replace(), porque no sé cuantos y cuales son los caracteres que se produce este error, y como lo único que me interesa es sacar texto y números (por que no creo que alguien busque por alguna fórmula), lo estoy haciendo así.

Gracias por responder

Última edición por NIGHTSOFTWARE; 08/07/2009 a las 08:32
  #5 (permalink)  
Antiguo 08/07/2009, 08:45
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con caracteres especiales

POdrías mostrarnos el código en que realizas la búsqueda? NO deberáis tener ese problema. Por otro lado, a qué te refieres exactamente con índice?

Ahora, 500kb/documento es mucha carga para el servidor. No sé si ya lo has pensado, pero necesitarás una gran memoria disponible en tu servidor

  #6 (permalink)  
Antiguo 19/08/2009, 09:42
 
Fecha de Ingreso: mayo-2009
Mensajes: 16
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con caracteres especiales

Gracias, ya solucioné este problema.

La lentitud no es precisamente por el reemplazo a través de expresiones regulares, sino que se produce cuando estoy guardando los datos en el índice, que por defecto, se demora una eternidad.
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 06:49.