我在PHP中编写了一个Web爬虫,并编写了一个可重用的xPath求值程序。该函数是:
function xPathEvalSingle($soruce, $xpathExpression) {
$resultsFromXpath = $source->evaluate($xPathExpression)->item(0)->textContent;
return $resultsFromXpath;
}
我创建一个新的DOMXPath对象并从有效的HTML页面加载:
$page = $this->getPageHtml($newCrawlUrl);
$source = new DOMXPath($page);
然后调用函数:
xPathEvalSingle($soruce, $xpathExpression) = Fatal error: Call to a member function evaluate() on a non-object
然而,当我没有任何功能时,我得到了我想要的东西
$resultsFromXpath = $source->evaluate($xPathExpression)->item(0)->textContent = What I want
如何正确地将DOMXPath传递给函数以使其工作?
答案 0 :(得分:1)
提高错误报告级别以包含通知。您在声明和函数调用中有相同的变量拼写错误$soruce
。
这意味着在调用中使用了未定义的变量。
示例:
<?php
error_reporting(E_ALL);
$source = 42;
print($soruce);
输出:
Notice: Undefined variable: soruce in /tmp/... on line 4
在函数内部,不使用参数,而是使用未知变量$ source。
示例:
<?php
error_reporting(E_ALL);
function foo($soruce) {
print($source);
}
foo(42);
输出:
Notice: Undefined variable: source in /tmp/... on line 5