Ver Mensaje Individual
  #9 (permalink)  
Antiguo 19/11/2014, 12:15
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: ¿cómo hago filtro de palabras prohibidas + puntuación?

No hay ningún error en la sintaxis del código. Lo que probablemente sucede es que la versión de PHP que utiliza Axo, es menor que la 5.4, en donde el uso de funciones lambda ya ha sido implementado y se pueden construir arrays con corchetes. Si quieres que funcione en versiones antiguas, puedes hacerlo así:

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

Aquí puedes ver cómo funciona con la función lambda y arrays construidos con corchetes y con una función nombrada y el constructor array().

Y respondiendo a lo que dice GeekGirl, cuando publiqué mi respuesta, el tema aún no había sido marcado como solucionado, pero aunque lo haya estado, no tiene absolutamente nada de malo el aportar con otra solución, de hecho, debes de saber que, en la programación, existen diversas formas de resolver un problema; lo que hice fue mostrar una alternativa más. Además, la optimización no va precisamente por el lado de la cantidad de líneas de código sino por el tiempo tomado en la obtención del resultado y, por ende, la cantidad de recursos utilizados. Tu solución funciona bien, pero no es la más óptima y, como dije, también podría optimizarse aún más la que propuse.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 19/11/2014 a las 18:23 Razón: Fe de erratas