nel ringraziare darkmik per il suggerimento devo però annunciare che...alla fine mi sono arreso e ho adottato questo:

Codice PHP:
<?php
function print_calendar($month="",$year="")
{
// impostiamo la data attuale
$now getdate(time());
// controlliamo mese e anno passati
if ( empty($month) OR empty($year) OR !is_numeric($month) OR !is_numeric($year) OR !@checkdate($month,1,$year) )
{
$month $now['mon'];
$year $now['year'];
}
// unix timestamp del primo giorno
// del mese e dell'anno ricevuti
$time mktime(0,0,0$month1$year);
// genera l'array con le informazioni
$date getdate($time);
// giorni totali per il mese e anno
$day_total cal_days_in_month(CAL_GREGORIAN$date['mon'], $date['year']);
//stampa mese e anno in oggetto
//in italiano come intestazione
setlocale(LC_TIME,"it_IT");
$mese_anno strftime('%B',$date[0]). " " .$year;
echo 
"<table><tr><td colspan=\"7\">[b]$mese_anno[/b]</td></tr>\n";
// stampa le abbreviazioni dei giorni della settimana
echo "<tr><td>Do</td><td>Lu</td><td>Ma</td><td>Me</td> <td>Gi</td><td>Ve</td><td>Sa</td></tr>\n";
for (
$i 0$i 6$i++)
{
echo 
'<tr>';
for (
$j 1$j <= 7$j++)
{
$day_number $j $i*$date['wday'];
//stampa la cella con il giorno
echo '<td';
if (
$day_number AND $day_number <= $day_total)
{
// borda di rosso se è oggi
if ($day_number == $now['mday'] AND $month == $now['mon'] AND $year == $now['year'])
{
echo 
" style=\"border: 1px solid #cc0000;\" ";
}
echo 
">$day_number";
}
else
{
//stampa una cella vuota se non esiste il giorno
echo '> ';
}
echo 
'</td>';
}
echo 
"</tr>\n";
if (
$day_number >= $day_total AND $i != 6)
break;
}
echo 
"</table>\n";
}


echo 
print_calendar()
?>
...trovato tra gli articoli di html.it!

siccome però stampa la domenica come primo giorno della settimana e a me piacerebbe fosse il lunedì (all'italiana) come posso settare l'array $date['wday'] (ammesso che sia questo un'array o un array di un array...) in modo tale che 0 sia lunedì e 6 domenica invece che 0 domenica e 6 sabato?