PHP getElementById not working


PHP getElementById not working

所以我试图用PHP编写一个简短的函数来检查服务器(或备份)是否可用。该服务提供了两个可供使用的服务器,以及服务器中的一个页面,该页面在id为"server_status"的元素中只包含"OK"。我基本上接受了他们提供的代码,并对其进行了调整,以便它提供我需要的那种输出。我想得到一个true或false的数组(取决于其中一个网站是否可用),以及正确的页面(如果可用)。现在每次的输出都是(false,"e404.html"),这就是我设置的在不满足任何条件的情况下输出的值。这是我的代码:

function checkURL() {
        $servers = array('tpeweb.paybox.com', // primary URL
        'tpeweb1.paybox.com'); // backup URL
        foreach($servers as $server){
            $doc = new DOMDocument();
            $doc->loadHTMLFile('https://'.$server.'/load.html');
            $server_status = "";
            $element = $doc->getElementById('server_status');
            if($element){
            $server_status = $element->textContent;
            }
            if($server_status == "OK"){
            // Server is up and services are available
            return array(true, 'https://'.$server.'/cgi/MYchoix_pagepaiement.cgi');
            }
        }
        return array(false, 'e404.html');
    }

在进行一些输出测试时,我似乎正在将文档加载到$doc中,但它没有填充$element。我是PHP的新手,所以我不太确定哪里出了问题。

编辑:

这是服务提供的原始代码,我对其进行了调整,因为我需要能够实际输出要使用的链接:

<?php
    $servers = array('urlserver.paybox.com', // primary URL
    'urlserver1.paybox.com'); // backup URL
    $serverOK = "";
    foreach($servers as $server){
        $doc = new DOMDocument();
        $doc->loadHTMLFile('https://'.$server.'/load.html');
        $server_status = "";
        $element = $doc->getElementById('server_status');
        if($element){
            $server_status = $element->textContent;
        }
        if($server_status == "OK"){
            // Server is up and services are available
            $serverOK = $server;
            break;
        }
        // else : Server is up but services are not available .
    }
    if(!$serverOK){
    die("Error : no server found");
}
?>
//echo 'Connecting to https://'.$server.'/cgi/MYchoix_pagepaiement.cgi';

谢谢,Adrian

您的html文件是否声明了doctype?

来自http://php.net/manual/en/domdocument.getelementbyid.php

要使此函数工作,您需要使用DOMElement::setIdAttribute设置一些ID属性,或者使用DTD将属性定义为ID类型。

在html文件的顶部包含<!DOCTYPE html>就足够了,并设置$doc->validateOnParse = true;,然后调用getElementByID函数。