Vemos pela net vários scripts enormes que fazem isso, mas será que é possivel fazer em poucas linhas?
Sim, é…

function dataextenso2(){
setlocale(LC_ALL, 'portuguese', 'pt_BR', 'pt_br', 'ptb_BRA');
$data = strftime("%A, %d de %B de %Y");
return $data;
}

echo dataextenso2();

//Será mostrado: sexta-feira 25 de dezembro de 2009