Yo con las expresiones regulares soy malísimo
![Pensando](http://static.forosdelweb.com/fdwtheme/images/smilies/scratchchin.gif)
Pero mira, te pongo un ejemplo utilizando sólo strpos y substring, es muy rudimentario pero te ahorras lo del array que si es un texto muy largo podría ser un uso excesivo de memoria para nada.
Código PHP:
<?php
$texto = "Bienvenido al sistema talycual Fulanito. estamos muy contentos de que haya venido recomendado por Pepito y haya decidido comprar el paquete Paquete1.";
$posN1 = 31;
$posF1 = strpos($texto,".");
$posN2 = strpos($texto, " por ") + 5;
$posF2 = strpos($texto," y haya decidido comprar el");
echo '1'.substr($texto,$posN1,$posF1-$posN1).'1';
echo '<br />1'.substr($texto, $posN2, $posF2-$posN2).'1';
?>
Los '1' están para ver que no haya espacios.
Eso habría que adaptarlo al texto original, es un ejemplo pero el método es igual, encontrar una cadena característica para identificar la posición de inicio y fin de los nombres.