Esto se a tratado en otras ocasiones,
Código PHP:
Ver original '01-01', // Año Nuevo (irrenunciable)
'10-04', // Viernes Santo (feriado religioso)
'11-04', // Sábado Santo (feriado religioso)
'01-05', // Día Nacional del Trabajo (irrenunciable)
'21-05', // Día de las Glorias Navales
'29-06', // San Pedro y San Pablo (feriado religioso)
'16-07', // Virgen del Carmen (feriado religioso)
'15-08', // Asunción de la Virgen (feriado religioso)
'18-09', // Día de la Independencia (irrenunciable)
'19-09', // Día de las Glorias del Ejército
'12-10', // Aniversario del Descubrimiento de América
'31-10', // Día Nacional de las Iglesias Evangélicas y Protestantes (feriado religioso)
'01-11', // Día de Todos los Santos (feriado religioso)
'08-12', // Inmaculada Concepción de la Virgen (feriado religioso)
'13-12', // elecciones presidencial y parlamentarias (puede que se traslade al domingo 13)
'25-12', // Natividad del Señor (feriado religioso) (irrenunciable)
);
$startDate = (new DateTime( '2018-11-01' )); //inicia
$endDate = (new DateTime( '2018-11-15' ))->modify('+1 day'); //termina
$interval = new DateInterval('P1D'); // intervalo de un día
/** @var \DateTime[] $date_range */
$date_range = new DatePeriod($startDate, $interval ,$endDate); //creamos rango de fechas
$workdays = 0;
foreach($date_range as $date){
//Se considera el fin de semana y los feriados como no hábiles
if($date->format("N") <6 AND
!in_array($date->format("d-m"),$holiday)) ++$workdays; // se cuentan los días habiles
}
Ahí tienes un ejemplo, que publique por ahí del 2015 si no mal recuerdo aquí en el foro.