Duración de tiempo a formato ISO 8601 en PHP

Pues eso, vamos a transformar duración de tiempos en formato ISO 8601, por ejemplo para su uso con Schema. Por ejemplo para las recipes de schema, para la duración de la receta:

$prepTime = '2 horas y 23 Minutos';
$prepTime = strtolower( $prepTime );
$prepTime = str_replace( 'minuto', 'minute',  $prepTime );
$prepTime = str_replace( 'hora', 'hour',  $prepTime );
$time = strtotime( $prepTime, 0);
$prepTime = my_iso8601_duration( $time );

La función my_iso8601_duration la he cogido de stackoverflow.

function my_iso8601_duration( $seconds )
	{
		$days = floor($seconds / 86400);
		$seconds = $seconds % 86400;
	
		$hours = floor($seconds / 3600);
		$seconds = $seconds % 3600;
	
		$minutes = floor($seconds / 60);
		$seconds = $seconds % 60;
	
		return sprintf('P%dDT%dH%dM%dS', $days, $hours, $minutes, $seconds);
	}