简单的 html dom 解析器返回错误 500

2022-08-31 01:10:53

我正在使用此示例中的simple_html_dom.php

http://nimishprabhu.com/top-10-best-usage-examples-php-simple-html-dom-parser.html

但是我在类内得到了错误500,当我在浏览器中键入url时,它工作正常吗?

我有一些像这样阵列中的vaules

$result= Array ( 
[Avenya Group AG] => 
Array ( 
[link] => CHE-218.938.800 
[href] => http://zh.powernet.ch/webservices/inet/HRG/HRG.asmx/getHRGHTML?chnr=0203038402&amt=020&toBeModified=0&validOnly=0&lang=1&sort=0 ) ) 

当我尝试这样的事情时

    foreach($result as $key => $value) { 
        $xmlFind = file_get_html($value['href']);
        foreach($xmlFind->find('a') as $a) {
        echo '<p>'.$a->href.'</p>';
        }
}

我遇到了错误

遇到 PHP 错误 严重性:警告消息:file_get_contents(http://zh.powernet.ch/webservices/inet/HRG/HRG.asmx/getHRGHTML?chnr=0203038402&amt=020&toBeModified=0&validOnly=0&lang=1&sort=0):无法打开流:HTTP 请求失败!HTTP/1.1 500 内部服务器错误文件名: 库/Simple_html_dom.php 行号: 76

但是当我像这样手动尝试时

$xmlFind = file_get_html('http://zh.powernet.ch/webservices/inet/HRG/HRG.asmx/getHRGHTML?chnr=0203038402&amt=020&toBeModified=0&validOnly=0&lang=1&sort=0');

结果是存在的,如果我键入该URL,我的浏览器一切都没问题,我唯一的问题是当我尝试循环数组时?


答案 1

检查 http://php.net/manual/en/function.file-get-contents.php 注释部分。

请检查您的服务器设置中的“fopen 包装器”

我尝试了以下方法

<?php
include('simple_html_dom.php');

$result= Array ( 
'Avenya Group AG' => 
Array ( 
'link' => 'CHE-218.938.800', 
'href' => 'http://zh.powernet.ch/webservices/inet/HRG/HRG.asmx/getHRGHTML?chnr=0203038402&amt=020&toBeModified=0&validOnly=0&lang=1&sort=0' ) ); 
foreach($result as $key => $value) { 
    $xmlFind = file_get_html($value['href']);
    foreach($xmlFind->find('a') as $a) {
    echo '<p>'.$a->href.'</p>';
    }
}

并得到了这个

#

http://www.shab.ch/shabforms/servlet/Search?EID=7&DOCID=6890948

http://www.shab.ch/shabforms/servlet/Search?EID=7&DOCID=981331

http://zh.powernet.ch/webservices/inet/hrg/hrg.asmx/getExcerpt?Chnr=CH-020.3.038.402-5&Amt=20&Lang=1

mailto:info@powernet.ch

答案 2

代理可能是一个问题。使用适当的代理。

// Create a stream
$opts = array(
    'http'=>array(
        'method'=>"GET",
        'header'=>"Accept-language: en\r\n" .
        "Cookie: foo=bar\r\n",
        'proxy' => 'tcp://221.176.14.72:80',
    )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://ifconfig.me/ip', false, $context);
var_dump($file);

推荐