Perfetto ZioLuffio,
La tua dritta funziona:
Codice PHP:
$stringa = "Giuseppe Garibaldi è nato a Nizza il 4 luglio 1821, il 2 giugno 1882 è morto a Caprera";
//$pattern = '/[0-9]{4}$/';
$pattern = '/[0-9]{4}/';
$replacement = '1807';
if($count = preg_match_all($pattern, $stringa, $matches, PREG_OFFSET_CAPTURE)){
list($found, $offset) = $matches[0][count($matches[0])-1];
$stringa_modificata = substr($stringa, 0, $offset) . str_replace($found, $replacement, substr($stringa, $offset));
}
echo "La stringa da modificare<br />\n";
echo $stringa . "<br />\n";
echo "La stringa modificata<br />\n";
echo $stringa_modificata . "<br />\n";
echo "Effettuate " . $count . " sostituzioni<br />\n";
Mi restituisce quel che volevo:
La stringa da modificare
Giuseppe Garibaldi è nato a Nizza il 4 luglio 1821, il 2 giugno 1882 è morto a Caprera
La stringa modificata
Giuseppe Garibaldi è nato a Nizza il 4 luglio 1821, il 2 giugno 1807 è morto a Caprera
Effettuate 2 sostituzioni
Che preg_replace può fare le sostituzioni a partire dall'inizio, ma non a partire dalla fine è un peccato. Comunque con la combinazione da te suggerita si rimedia a questo limite.
Ti ringrazio e alla prossima