Pues .. lo que te haría falta es contar palabras .. eso lo podrías hacer con str_word_count() .. pero a su vez tendrías que comparar cada palabra con el "criterio" (que ha de ser una palabra .. no espacios).
Código PHP:
<?
$texto="tengo un coche nuevo";
$criterio="nuevo";
// obtenemos un array con las palabras.
$palabras=explode(" ",$texto);
// contamos los elementos del array obtenido ...
$total_palabras=count($palabras);
// recorremos el array de palabras .. El "indice" del array será la posición que ocupe dentro de la frase.
foreach ($palabras as $posicion => $palabra){
// si se cumple que el criterio es igual a la palabra que estamos leyendo del array ...
if ($palabra == $criterio){
// calculamos el pocentaje como lo necesitas
$porcentaje=100-($posicion*100)/$total_palabras;
// y ya no hace falta mirar más así que terminamos el bucle (ciclo del foreach)
break;
}
}
echo "Frase: ".$texto."<br>";
echo "Criterio: ".$criterio."<br>";
echo "Porcentaje: ".$porcentaje." %";
?>
Problemas o consideraciones ..
* Sólo buscar por un criterio .. y este ha de ser una palabra (no espacios).
* Si se repite el critério .. se toma como "porcentaje" la primera coincidencia/posición que se encuentre ...
Eso sería la base .. la verdad que sin saber como ha de trabajar la "lógica" (pues el ejemplo que hicistes primero y la explicación últmima != ) no sé si será eso lo que necesitas .. pero por ahí anda la cosa ..
Un saludo,