prueba con esto (hecho `onthefly`)
Código PHP:
function contar_palabras($cadena,$palabra) {
$i=0;
while($cadena = strstr($cadena,$palabra)) {
$cadena=substr($cadena,1);
$i++;
}
return $i
}
¿Que hace?
strstr devuelve una cadena a partir de la primera ocurrencia de palabra o caracter
substr devuelve una cadena a partir de la posicion.
Más info de ambas:
StrStr SubStr
La idea es simple, buscas que exista palabra, despues, te quedas con la frase a partir de la primera ocurrencia de palabra, luego, le quitas la primera letra, contador ++, y vuelves a buscar, etc
Ejemplo:
contar_palabras("Mi mama me mima mucho mama mima :)","mama");
strstr->$cadena pasaria a ser "mama me mima mucho mama mima :)";
substr->$cadena pasaria a ser "ama me mima mucho mama mima :)";
i=1
strstr->$cadena pasaria a ser "mama mima :)";
substr->$cadena pasaria a ser "ama mima :)";
i=2;
strstr-> FALSE, por lo cual no entra al bucle.
Resultado= 2 :)