Me voy a saltar la parte en la que lees el archivo e ingresas los valores en una variable porque asumo que eso ya sabes de sobra como hacerlo.
Código PHP:
// Tenemos el siguiente string:
$textoInicial = 'Esto es un texto ejemplo;Con frases separadas por punto y coma;en donde solo debo extraer las frases que contengan la palabra "ejemplo"; pero no las que contengan ejemplos';
// en primer lugar creamos un array con cada frase tomando como item delimitador el punto y coma (;)
$arrayFrases = explode(";", $textoInicial);
// Imprimimos el array
echo '<pre>';
var_dump($arrayFrases);
// Recorremos el array y para cada indice evaluamos si existe la palabra "ejemplo"
foreach($arrayFrases as $indice => $frase){
if (preg_match("/ejemplo\b/", $frase)) {
// Cuando encontramos que la palabra existe, creamos un nuevo array con esa frase
$nuevoArrayFrases[] = $frase;
}
}
// Imprimimos nuestro nuevo array
echo '<pre>';
var_dump($nuevoArrayFrases);
// Una vez que ya tenemos el array, lo convertimos en un string
$nuevoTexto = implode(";", $nuevoArrayFrases);
A partir de este punto simplemente tienes que crear el nuevo archivo con tu nuevo string.
Espero te sirva.
Salu2
Nota: Porque usar preg_match(): La razón de usar la funcion preg_match radica unicamente en que la busqueda que debes hacer debe encontrar una similitud exacta, "ejemplo", de lo contrario si usaras strpos, encontraria similitudes en frases con palabras como "EjEmPlo", "ejemplos", "ejemplossss" etc.
El condicional /b obliga a preg_match a encontrar una similitud exacta del texto incluyendo mayusculas, minúsculas y longitud de la palabra.