Originariamente inviato da WillyLord
Ci sto lavorando, ma volevo sapere per curiosità:
'#\w+#'
a che serve?

http://it.php.net/manual/en/regexp.reference.php

Serve per identificare le singole parole che andranno a formare il tuo array da confrontare con quello delle città.

La funzione array_map() è spiegata qui
http://it.php.net/manual/en/function.array-map.php

codice:
<?php
$citta = array('roma','milano','napoli','torino');
$title = "Sono stati trovati dei resti archeologici a Roma e a Napoli";

// funzione per convertire in minuscolo l'elemento dell'array che viene passato
function minuscolo($val) {
  return strtolower($val);
}

preg_match_all('#\w+#',$title,$mth);


// rendo minuscole tutte le stringhe recuperate tramite l'espressione regolare
$parole = array_map('minuscolo',$mth[0]);

// recupero gli elementi comuni
$result = array_intersect($citta, $parole);

//echo '<pre>';
//print_r($result);

// verifico quanti elementi ha restituito l'intersezione
// se ce ne sono recupero il primo elemento "capitalizzato"
echo count($result) > 0 ? ucfirst($result[0]) : 'nessuna corrispondenza';
?>