Ver Mensaje Individual
  #7 (permalink)  
Antiguo 19/11/2014, 09:59
Axo
 
Fecha de Ingreso: abril-2003
Ubicación: Virtual
Mensajes: 953
Antigüedad: 21 años
Puntos: 7
Respuesta: ¿cómo hago filtro de palabras prohibidas + puntuación?

Cita:
Iniciado por Alexis88 Ver Mensaje
Otra manera, más corta y eficiente (aunque creo que puede ser aún más eficiente):

Código PHP:
Ver original
  1. function contar($texto){
  2.     $array = array_filter(preg_split('/[\s\.\,]+/s', strtolower($texto)), function($palabra){
  3.         if (in_array($palabra, ['loca', 'idiota', 'viagra'])) return $palabra;
  4.     });
  5.     foreach (array_count_values($array) as $k => $v) echo $k . ': ' . $v . '<br />';
  6. }
  7. contar('la loCa del bosque era muy loca y entonces enloquecio muy LOCA mente. Locura');
  8. contar('La idiota estuvo insistiendo por lo iDioTa que es. Además, es una loca y su marido consume vIaGRa.');

Lo anterior devuelve lo siguiente:

Código HTML:
Ver original
  1. //De la primera cadena
  2. loca: 3
  3.  
  4. //De la segunda cadena
  5. idiota: 2
  6. loca: 1
  7. viagra: 1

Lo que hace la función es lo siguiente. Primero, convierte el texto a minúsculas y separa las palabras a partir de los espacios en blanco, comas y puntos que encuentre (puedes añadir más caracteres especiales). Luego, del array resultante, tomo a las palabras que coincidan con las que estamos buscando y, finalmente, formo un array en el que los índices serán las palabras encontradas y los valores, la cantidad de repeticiones de cada una de ellas, imprimiendo así dichos valores.

Saludos
Hola, la he probado y me da error. Estoy viendo a ver si consigo dar con el pero no hay forma.