Sono andato a cercare nel forum una domanda che avevo fatto tanto tempo fa attinente a questa discussione.
Allora ciò che mi serviva era recuperare l'inizio e la fine di una stringa. Volevo ad esempio recuperare le prime tre parole e volevo che quelle separate dall'apostrofo mi venissero considerate due distinte.


fabi080 mi aveva sfornato queste belle regexp.
Codice PHP:
function firstwords($text$n) { 
  return 
preg_match('/^([^a-z]*[a-z]+){'.$n.'}/i'$text$matches) ? $matches[0] : $text


function 
lastwords($text$n) { 
  return 
preg_match('/([a-z]+[^a-z]*){'.$n.'}$/i'$text$matches) ? $matches[0] : $text


$text "L'altra questione da risolvere è quella relativa agli apostrofi"
//var_dump(firstwords($text, 4)); 
//var_dump(lastwords($text, 4));

echo firstwords($text3); // Restituisce L'altra questione
echo "
"
;
echo 
lastwords($text3); // relativa agli apostrofi 
Quindi il problema della parte iniziale è risolto.
Purtroppo essendo a livello zero in quanto a espressioni regolari non saprei invece come integrarle per il conteggio delle parole.