Well adding an @ in front of utf8_decode just supresses the error message. If the function is not found you will get no return value and thus string will contain nothing.
So your problem is the missing utf8_decode. According to the manual at
http://www.php.net/manual/en/function.utf8-decode.php this function should be available in all PHP4 and PHP5 versions. So it looks like your PHP installation is broken.
According to a post at
http://www.faqts.com/knowledge_base/view.phtml/aid/357/fid/17 you maybe need to compile PHP with --with-xml but this seems to be PHP3 related. An blog entry at
http://www.letitshine.org/?p=2 suggests to install a php-xml package (if available for your distribution)
So to sum it up: you need that utf8_decode function!