PHP getElementById不工作
所以我试图用PHP编写一个简短的函数来检查服务器(或备份)是否可用。该服务提供了两台服务器供使用,并且服务器内的一个页面在ID为“server_status”的元素中只有“OK”。我基本上把他们提供的代码和调整它,以便它提供我需要的那种输出。我想得到一个真或假的数组(取决于其中一个网站是否可用)以及正确的网页(如果是)。现在每次输出都是(false,“e404.html”),这是我设置输出的条件,如果没有满足条件。这里是我的代码:PHP getElementById不工作
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');
}
做一些测试输出,看来我加载文件到$文档,但它不填充$元素。我是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文件是否已经声明了文档类型?
从http://php.net/manual/en/domdocument.getelementbyid.php
对于此功能工作,你需要或者可设置与一个DOMElement :: setIdAttribute或定义的属性为ID类型的DTD一些ID属性。
应该足以包括<!DOCTYPE html>
在HTML文件的最顶部,并调用函数的getElementById之前设置 $doc->validateOnParse = true;
。
我在包含php的html文件中声明了doctype,但是我不控制正在加载的两个文件。 – Adrian 2015-03-19 12:02:08
您可以尝试首先获取html文件的内容[file_get_contents](http://php.net/manual/en/function.file-get-contents.php),然后将doctype添加到该文件中并使用生成的字符串作为DOMDocument的输入,使用[loadHTML](http://php.net/manual/en/domdocument.loadhtml.php)代替loadHTMLFile – 2015-03-19 13:22:29
提供的文件已经有doctype,但是当我尝试加载文件内容时不会将任何内容加载到变量中 – Adrian 2015-03-20 12:55:40
什么是你的服务器状态变量内容? – siddhesh 2015-03-19 11:54:09
它为我工作.. PHP 5.4 – 2015-03-19 11:55:26
在这里很好的工作,代码似乎没问题。在PHP conf中猜测一些东西。 – yergo 2015-03-19 11:56:22