extraer parte de una cadena antes y después de una palabra

necesitoextraer y mostrar algunas palabrasantes de ydespués a palabra de consulta, algo así como los resultados de búsqueda de google, por ejemplo:

$str = "hi user! welcome to new php open source world, we are trying to learn you something!";
$query = "new php";
$result = "... welcome to new php open source ...";

Busqué en Google y SO, pero no encontré una respuesta clara o quizás mi conocimiento de php no fue suficiente. ¿Existe una función viable y fácil de usar para hacer este trabajo?

Respuestas a la pregunta(5)

Su respuesta a la pregunta