Otra manera, más corta y eficiente (aunque creo que puede ser aún más eficiente):
Código PHP:
Ver originalfunction contar($texto){
if (in_array($palabra, ['loca', 'idiota', 'viagra'])) return $palabra; });
}
contar('la loCa del bosque era muy loca y entonces enloquecio muy LOCA mente. Locura');
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//De la primera cadena
loca: 3
//De la segunda cadena
idiota: 2
loca: 1
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