function hsc($text){
    return preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
           str_replace(array('&', '"', '<', '>',' '), array('&', '"', '<', '>', ' '), $text));
}