Ya he dado con la solución xD
Código PHP:
function calcula_semanas_mes($fecha_desde, $fecha_hasta){
$dividefecha = explode("-", $fecha_desde);
$fecha_desde = mktime(0, 0, 0, $dividefecha[0], $dividefecha[1], $dividefecha[2]);
$dividefecha = explode("-", $fecha_hasta);
$fecha_hasta = mktime(0, 0, 0, $dividefecha[0], $dividefecha[1], $dividefecha[2]);
$segundos = $fecha_desde - $fecha_hasta;
$segundos = abs($segundos);
$semanas = floor($segundos / 604800);
return $semanas;
}
function numero_semana($anho, $mes, $dia){
$ns = strftime("%W", mktime(0,0,0,$mes,$dia,$anho));
$ns += 0;
$primer_dia_anho = getdate(mktime(0,0,0,1,1,$anho));
if ($primer_dia_anho["wday"] != 1)
$ns += 1;
return ($ns);
}
function dias_mes($anio, $mes){
if(((fmod($anio,4)==0) and (fmod($anio,100)!=0)) or (fmod($anio,400)==0)) $dias_febrero=29; else $dias_febrero=28;
switch($mes){
case 01: $dm=31; break;
case 02: $dm=$dias_febrero; break;
case 03: $dm=31; break;
case 04: $dm=30; break;
case 05: $dm=31; break;
case 06: $dm=30; break;
case 07: $dm=31; break;
case 08: $dm=31; break;
case 8: $dm=31; break;
case 09: $dm=30; break;
case 9: $dm=30; break;
case 10: $dm=31; break;
case 11: $dm=30; break;
case 12: $dm=31; break;
}
return $dm;
}
$periodo=$_GET[periodo];
$mes=(int)substr($periodo,0,2);
$anho=(int)substr($periodo,2,4);
$dm=dias_mes($anio, $mes);
$fecha_desde=$anho."-".$mes."-01";
$fecha_hasta=$anho."-".$mes."-".$dm;
$fecha_desde2=$mes."-01-".$anho;
$fecha_hasta2=$mes."-".$dm."-".$anho;
$semanas_mes=calcula_semanas_mes($fecha_desde2, $fecha_hasta2);
$sem_ini=numero_semana($anho, $mes, 1);
$sem_fin=$sem_ini+$semanas_mes;
$f=$fecha_desde;
for($i=$sem_ini; $i<=$sem_fin; $i++){
if($i==$sem_ini){
$fecha=date("Y-m-d", strtotime($f));
}else{
$f=date("Y-m-j", strtotime('+1 week',strtotime($f)));
$fecha=$f;
}
$fecha = explode("-",$fecha);
$queDiaRepresenta = date('w', mktime(0,0,0,$fecha[1],$fecha[2],$fecha[0]));
$diaSeleccionar = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
$diaRemplazar = array('Lun','Mar','Mie','Jue','Vie','Sab','Dom');
$mesSeleccionar = array('January','February','March','April','May','June','July','August','September','October','November','December');
$mesRemplazar = array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic');
$n = 1;
$semana = array();
while($n <= 5){
$dia = ($fecha[2]-$queDiaRepresenta+$n++);
$semana[] = date('l-Y-F-d', mktime(0,0,0,$fecha[1],$dia,$fecha[0]));
}
foreach($semana as $k => $v){
$fechaFinal = explode("-",$v);
$fechaFinal[0] = str_ireplace($diaSeleccionar,$diaRemplazar,$fechaFinal[0]);
$fechaFinal[2] = str_ireplace($mesSeleccionar,$mesRemplazar,$fechaFinal[2]);
$fechaFinal[3] = (int)$fechaFinal[3];
echo $fechaFinal[0].", ".$fechaFinal[3]." de ".$fechaFinal[2]."<br />";
}
}