我需要PHP的HTML解析器并使用以下库 - https://github.com/paquettg/php-html-parser
我甚至无法运行简单的代码。我正在添加文件的方式看起来有些不对劲。以下是我的代码。
<?php
use PHPHtmlParser\Dom;
$url = 'http://google.com/';
// echo class_exists('Dom')?'yes':'no';
$dom = new Dom;
$dom->loadFromUrl($url);
$html = $dom->outerHtml;
echo $html;
?>
echo $html
没有给我任何输出。因此,我检查了class_exists
是否为no
,结果为<html>
<head>
<title>Math Page</title>
</head>
<link href="main.css" rel="stylesheet" type="text/css">
<body>
<button onclick="mathstuff()">Random number 1-10 (with math.floor </button>
<p id="demo"></p>
<button onclick="mathstuff2()">Random number 0-1 (with math.random</button>
<p id="demo2"></p>
<br>
<p>Please input a number 1-10</p>
<input id="numb" type="text">
<button type="button" onclick="onetoten()">Submit</button>
<p id="displayonetoten"></p>
<br>
<button type="button" style="position: absolute; right: 0;" onclick="lives+=" id="uplife">Click to increase life by 1</button>
<br>
<p align="right"></p>
<p align="right" id="livestext">LIVES</p>
<button type="button" style="position: absolute; right: 0" onclick="lives-=" id="downlife">Click to decrease life by 1</button>
<br>
<p id="endingmessage"></p>
<script language="javascript">
function mathstuff() {
var x = Math.floor((Math.random() * 10) + 1);
document.getElementById("demo").innerHTML = x;
}
function mathstuff2() {
var x = Math.random();
document.getElementById("demo2").innerHTML = x;
}
function onetoten() {
var x, text;
//get the value of input with id "numb"
x = document.getElementById("numb").value;
//if x is not a number or is less than one or greater than 10
if (isNaN(x) || x < 1 || x > 10){
text="Not A Valid Input";
}
else {
text="A Valid Input"
}
document.getElementById("displayonetoten").innerHTML=x+" is "+text;
}
/* function gainloselife(){
increase/decrease lives
function gainlife(){
lives += 1;
}
function loselife(){
lives -= 1;
} */
var lives = 1;
//lives testing
function lifetest(){
var message;
if (isNaN(lives) || lives < 0){
//endgame();
message="You are out of lives. Better luck next time. Press Restart to try again.";
}
else {
message="You have at least a life left";
} document.getElementById("endingmessage").innerHTML=message;
}
lifetest();
document.getElementById(livestext).innerHTML=lives;
}
</script>
</body>
</html>
。
我做错了吗?
答案 0 :(得分:1)
首先,class_exists
仅适用于完全限定的类名(即包括命名空间):
class_exists('PHPHtmlParser\Dom')
其次,您需要包含一个自动加载器 1 ,它告诉PHP在哪里查找类文件。
如果您使用composer 安装了PHPHtmlParser,则可以使用composer 2 生成的那个:
require_once 'vendor/autoload.php';
如果您下载了PHPHtmlParser源,则必须构建自己的自动加载器或使用第三方PSR-0 3 兼容的自动加载器(因为这是标准的图书馆使用)。
spl_autoload_register(function($className)
{
$baseDir = 'PHPHtmlParser/src';
$fileName = $baseDir . DIRECTORY_SEPARATOR . str_replace('\\', DIRECTORY_SEPARATOR, $className) . '.php';
if (stream_resolve_include_path($fileName)) {
include $fileName;
return true;
}
return false;
}
);
(根据您提取文件的位置调整'PHPHtmlParser/src/
)
1)http://php.net/autoload
2)https://getcomposer.org/doc/01-basic-usage.md#autoloading
3)http://www.php-fig.org/psr/psr-0/
答案 1 :(得分:0)
如果您使用的是作曲家,必须包括vendor/autoload.php
这样的
<?php
require_once __DIR__.'/vendor/autoload.php';
use PHPHtmlParser\Dom;
$url = 'http://google.com/';
// echo class_exists('Dom')?'yes':'no';
$dom = new Dom;
$dom->loadFromUrl($url);
$html = $dom->outerHtml;
echo $html;
?>
1)从https://getcomposer.org/composer.phar
下载作曲家2)创建一个文件composer.json
{
"require": {
"paquettg/php-html-parser": "0.1.0"
}
}
3)从终端php composer.phar install
运行以安装依赖项
4)现在编辑脚本并添加require_once __DIR__.'/vendor/autoload.php';
5)学会正确使用作曲家https://getcomposer.org/doc/01-basic-usage.md
答案 2 :(得分:0)
我快速查看了Dom类的代码,loadFromUrl
方法使用PHP核心方法file_get_contents
来获取网站的内容。此方法要求php.ini
选项allow_url_fopen
设置为true。
如果是这种情况,问题可能在于课堂加载问题。