Hola
Como dice andresdzphp está claro que la expresión regular o bien no está bien construida o bien no tienes en cuenta que puede darse el caso que no se encuentren coincidencias con el patrón dado. Si crees que está bien construida entonces deberás controlar cuando no se encuentran coincidencias:
Código PHP:
if (preg_match('#<div class="hotel-location-information">([^<]+)<em>(.+) </em>#si',$hotel,$direccion) ) {
$nombreHotel[$c]['Direccion']=$direccion[1].' '.$direccion[2];
}
Haz un print_r($direccion) para ver que tienes ahí metido. A mi me da que algo falla en la construcción de la expresión regular.
Saludos.