Auch Tach :-)
Wie muss ich es richtig machen, damit ich die Fehler einsammeln kann, also im Script dann auch darauf zugreifen kann auf die Fehlermeldung?
Warning: DOMDocument::loadHTML(): Attribute alt redefined in Entity, line: 88 in F:\Xampp\html-parser\domdocument.class\get_linklist.php on line 13
Das ist ja auch keine Exception sondern eine Warnung. Exceptions werden nur von ausgewählten Extensions geworfen, ansonsten gibts die herkömmlichen Fehlermeldungen.
Das habe ich inzwischen begriffen. DOMDocument gaukelt zwar OOP vor, ist aber - wie so vieles in PHP - dabei nicht konsequent und benutzt klassisches Errorhandling.
Ich habe das jetzt ungefähr so reingebastelt in mein Tool:
Programm (nur Auszug!):
<?php
## globales Sammelarray vereinbaren
$_errors = array();
#---------------------------------------------------------------------------
function handleError($errno, $errstr, $errfile, $errline, array $errcontext)
{
global $_errors;
$_errors[] = array('errno' => $errno, 'errstr' => $errstr,
'errfile' => $errfile, 'errline' => $errline); # , 'context' => $errcontext);
}
#---------------------------------------------------------------------------
# [...]
set_error_handler('handleError');
$dom->loadHTML($page);
restore_error_handler();
# [...]
?>
<pre>
<?php echo htmlspecialchars(print_r($_errors, 1)); ?>
</pre>
So lassen sich die Warnungen des Parsers sammeln.
Leider landen dann auch alle anderen Fehler in diesem Array und müssen selber aussortiert und abgefangen werden. Schöner wäre es, wenn man nur die Warnings ausfiltern könnte.
Außerdem stört mich die globale Variable $_errors für das Fehlersammelarray. Aber die bekomme ich wohl nicht weg, da die Signatur für den Errorhandler ja von PHP festgelegt ist und ich keinen weiteren Parameter (IN/OUT) mehr hinzufügen kann. Sehe ich das richtig?
Ich bin also für jeden Verbesserungsvorschlag dankbar.
Grüße
TS