PHP retornando erro página em print_r simplexml
-
22-07-2019 - |
Pergunta
O problema só está acontecendo com um arquivo quando eu tento fazer um método DocumentDOM / SimpleXML, então parece que o problema é com o arquivo. Nenhum indício que poderia ser.
Se eu faça o seguinte:
$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
print_r($xml);
no Chrome, eu recebo um erro "Página não disponível". No Firefox, eu não recebem nada.
Se eu fizer a mesma coisa, mas a um "Test2.html", eu obter uma impressão como esperado.
Se eu tentar a mesma coisa, mas fazê-lo desta maneira:
$file = "test1.html";
$data = file_get_contents($file)
$dom = DOMDocument::loadHTML($data);
$xml = simplexml_import_dom($dom);
print_r($xml);
Eu recebo o mesmo problema.
Se eu comente a linha print_r, o Chrome vai desde o "Página não disponível" em branco.
Eu mudei as permissões para 777, caso em que era um problema, nenhuma solução.
Eu tentei simplesmente ecoando o conteúdo do html, não há problema em tudo.
Qualquer pistas a respeito de porque a) Chrome faria isso, e b) por que eu não estou recebendo qualquer resultado utilizáveis?
Update:
Se eu colocar em: $ File = "test1.html"; $ Dom = DOMDocument :: loadHTMLFile ($ file); if (! $ dom) { echo "Nenhuma carga!"; } outro { Xml $ = simplexml_import_dom ($ Dom); print_r ($ xml); }
Eu recebo o mesmo problema. Se eu colocar em:
$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
if(!$dom) {
echo "No Load!";
}
else {
echo "Load!";
}
Eu recebo o "Load!" de saída, o que significa que o método de dom não deve ser o problema (?)
Vou tentar o mesmo teste exato com o simplexml.
Update2:
Se eu fizer isso:
Eu recebo o mesmo problema. Se eu colocar em:
$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
echo "No Load!";
}
else {
echo "Load!";
}
Eu recebo "Load!" mas se eu fizer:
$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
echo "No Load!";
}
else {
echo "Load!";
print_r($xml);
}
Eu recebo o erro. Eu fiz finalmente perceber que eu tinha uma opção para ver o erro no Chrome:
Error 324 (net::ERR_EMPTY_RESPONSE): Unknown error.
O arquivo html problemático é 288KB. Que poderia ser o problema? Se assim for, como eu iria ajustar para isso?
Última Atualização:
muito estranho. Eu posso usar métodos e funções no objeto (como simplexml ou DOMDocument), para que eu possa fazer coisas como XPath para excluir ou analisar o html, etc. Em alguns casos (pequenos resultados) pode ecoar a resultados, mas para coisas grandes ( mostrar todos os vãos), ele falha da mesma forma.
Assim, desde que o resultado final, eu acho que vai caber nestes parâmetros, eu deveria ficar bem (eu acho).
Mas qualquer solução real é muito bem-vindos.
Outras dicas
DocumentDOM e / ou SimpleXML pode socorrer se o documento for mal formado. Tente algo como:
$dom = DOMDocument::loadHTMLFile($file);
if (!$dom) {
echo 'Loading file failed';
exit;
}
$xml = simplexml_import_dom($dom);
if (!$xml) {
...
}
Se a criação do $ dom trabalhou, a conversão para US $ xml deve funcionar bem, mas certifique-se de qualquer maneira.
Edit:. Como Gehrig disse, fazer relatórios certeza erro está ligado, que deve torná-lo óbvio onde o processo falha