Hannes Magnusson wrote on 30.07.2009 10:48:
> Are you intentionally ignoring what I've said previously in the thread?
> Please stop using SimpleXML as an example. You do not need @.
> <?php
> libxml_use_internal_errors(true);
> $sxe = simplexml_load_string("<?xml version='1.0'><broken><xml></broken>");
> if (!$sxe) {
>   echo "Failed loading XML\n";
>   foreach(libxml_get_errors() as $error) {
>     echo "\t", $error->message;
>   }
> }
> 
> Outputs:
> Failed loading XML
>       Blank needed here
>       parsing XML declaration: '?>' expected
>       Opening and ending tag mismatch: xml line 1 and broken
>       Premature end of data in tag broken line 1
> 
> No PHP warnings at all.
> 
> 
> Again. The examples you are looking for are network issues with
> fopen(), file_get_contents() and such things.

I tested libxml_use_internal_errors() with XMLReader now, and it doesn't
really work as intended. When calling $reader->read(), and reaching an
invalid node, there is in fact the error stored in libxml_get_errors(),
but PHP additionally still throws a "parse error" warning. When then
trying to supress it there with @$reader->reader(), PHP doesn't throw
the warning, but libxml also doesn't store the error internally. Passing
libxml_noerror or libxml_nowarning to $reader->open() doesn't have any
effect at all.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to