Hay al menos 4 funciones que te ayudarán:
strpos() que encuentra la primera vez que aparece al palabra
strrpos() que encuentra la última
stripos() y strripos() que hacen lo mismo pero sin tener en cuenta las mayúsculas.
Luego empleas substr() para cortar la cadena por el sitio que te ha devuelto la función de arriba...
Te pongo en ejemplillo de uso de la primera. Las otras se emplean igual...
Código PHP:
<?php
$cadena="Esta es una pedazo de cadena que parece no tener fin porque me he pasado mucho rato escribiendo para ello...";
//A ver dónde está la palabra fin
$palabra="fin";
$lugar=strpos($cadena,$palabra);
if ($lugar){
//Ya puedo quedarme con el pedazo hasta la palabra fin, sin incluirla...
//Ojo porque sí incluye el espacio que hay entre 'tener' y 'fin'
$pedazo=substr($cadena,0,$lugar);
}else{
//La palabra no se ha encontrado
}
//Puesto todo en una línea
$pedazo=stripos($cadena,$palabra)?substr($cadena,0,strpos($cadena,$palabra)):$cadena;
echo($pedazo);
?>
Hay otra función curiosa: strstr() que te devolvería el pedazo de la cadena original que queda después de la palabra buscada...
Saludos