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