Frage

Das Problem ist nur mit einer Datei geschieht, wenn ich versuche, eine DocumentDOM / SimpleXML Methode zu tun, so scheint es, wie das Problem mit dieser Datei ist. Keine Ahnung, was es sein könnte.

Wenn ich Folgendes tun:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);

print_r($xml);

in Chrome, erhalte ich eine "Seite nicht verfügbar" Fehler. In Firefox, bekomme ich nichts.

Wenn ich das gleiche tun, sondern mit einem „test2.html“, bekomme ich einen Ausdruck wie erwartet.

Wenn ich versuche das Gleiche, aber es auf diese Weise tun:

$file = "test1.html";
$data = file_get_contents($file)
$dom = DOMDocument::loadHTML($data);
$xml = simplexml_import_dom($dom);

print_r($xml);

Ich erhalte das gleiche Problem.

Wenn ich die print_r Zeile aus kommentieren, Chrome gehen von der „Seite nicht verfügbar“ zu leer.

Ich habe die Berechtigungen auf 777, in dem Fall, dass ein Problem war, keine Lösung.

Ich habe versucht Echo einfach aus dem Inhalt des HTML, kein Problem.

Irgendwelche Hinweise, warum a) Chrome das tun würde, und b) warum ich keine verwertbaren Ergebnisse zu erzielen?


Update:

Wenn ich setze in:     $ File = "test1.html";     $ Dom = DOMDocument :: loadhtmlfile ($ file);     if (! $ dom) {         echo "Keine Last!";     }     else {     $ Xml = simplexml_import_dom ($ dom);     print_r ($ xml);     }

Ich erhalte das gleiche Problem. Stecke ich in:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
if(!$dom) {
    echo "No Load!";
}
else {
    echo "Load!";
}

Ich erhalte die „Load“ Ausgabe, dass das dom Methode das Problem sein sollte nicht Sinn (?)

Ich werde exakt den gleichen Test mit dem simplexml versuchen.


Update2:

Wenn ich dies tun:

Ich erhalte das gleiche Problem. Stecke ich in:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
    echo "No Load!";
}
else {
    echo "Load!";
}

Ich erhalte "Load" aber wenn ich tun:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
    echo "No Load!";
}
else {
    echo "Load!";
    print_r($xml);
}

Ich erhalte den Fehler. Ich habe schließlich fest, dass ich eine Option hatte den Fehler in Chrome anzuzeigen:

 Error 324 (net::ERR_EMPTY_RESPONSE): Unknown error.

Die lästige HTML-Datei ist 288KB. Könnte sein, dass das Problem sein? Wenn ja, wie würde ich einstellen für das?


Letzte Aktualisierung:

Sehr seltsam. Ich kann Methoden und Funktionen für das Objekt verwenden (wie simplexml oder DOMDocument), so kann ich Dinge wie XPath tun, um die HTML zu löschen oder zu analysieren, usw. In einigen Fällen (kleine Ergebnisse) kann es Ergebnisse echo, aber für große Sachen ( Zeige alle Spannweiten), ist es nicht in der gleichen Weise.

Also, da das Endergebnis, ich glaube, in diesen Parametern passen, ich sollte in Ordnung sein (ich glaube).

Aber eine wirkliche Lösung ist sehr willkommen.

War es hilfreich?

Lösung

  • Schalten Sie die Fehlerberichterstattung: error_reporting(E_ALL); in der ersten Zeile des PHP-Code
  • .
  • Überprüfen Sie die Speichergrenze Ihrer PHP-Konfiguration: memory_limit in den jeweiligen php.ini
  • Was ist der Unterschied zwischen test1.html und test2.html? Vielleicht ist test1.html nicht wohlgeformt ist.

Andere Tipps

DocumentDOM und / oder SimpleXML kann aus der Patsche helfen, wenn das Dokument ungültig ist. Versuchen Sie so etwas wie:

$dom = DOMDocument::loadHTMLFile($file);
if (!$dom) {
    echo 'Loading file failed';
    exit;
}

$xml = simplexml_import_dom($dom);
if (!$xml) {
    ...
}

den $ dom Wenn die Erstellung gearbeitet, Umstellung auf $ xml sollte auch funktionieren, aber stellen Sie sicher, trotzdem.

Edit:. Als Gehrig sagte, stellen Sie sicher, dass die Fehlerberichterstattung auf, dass es offensichtlich machen sollte, wenn der Vorgang fehlschlägt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top