He logrado resolver el asunto partiendo de la solución de Patriarka, me diste grandes ideas y funciones que no conocía, aquí la solución.
Código PHP:
<?php
$fecha = '2013-01-01'; //formtao sql yyyy-mm-dd
$cantidadDiasVacaciones = 14;
$cantidadDiasValidos = 0;
$cantidadDiasFeriados = 0;
$fechaSalida = "";
while(true){
if(is_dia_valido($fecha)){
$cantidadDiasValidos++;
if($cantidadDiasValidos == $cantidadDiasVacaciones){
echo $fecha."<br>";
echo "Cantidad dias validos: ".$cantidadDiasValidos."<br>";
echo "Cantidad dias feriados: ".$cantidadDiasFeriados."<br>";
echo "------------------<br>";
break;
}else{
$fecha = date_create($fecha);
$fecha = date_add($fecha, date_interval_create_from_date_string('1 days'));
}
}else{
$cantidadDiasFeriados++;
$fecha = date_create($fecha);
$fecha = date_add($fecha, date_interval_create_from_date_string('1 days'));
}
$fecha = date_format($fecha, 'Y-m-d');
}
function is_dia_valido($fecha){
$weekday = date("w", strtotime($fecha));
if($weekday == 0 || $weekday == 6){
return false;
}else{
$feriados = array(
'01-01',
'10-04',
'11-04',
'01-05',
'21-05',
'29-06',
'16-07',
'15-08',
'18-09',
'19-09',
'12-10',
'31-10',
'01-11',
'08-12',
'13-12',
'25-12');
$fecha = explode("-", $fecha);
$fecha = $fecha[2]."-".$fecha[1]; // deberia devolver DIA-MES
if(in_array($fecha, $feriados)){
return false;
}
else{
return true;
}
}
}
?>
Cabe destacar que tambien toma en cuenta los dias no laborables como sabados y domingos