通过函数传递DOMDocument时出错

时间:2014-05-27 20:24:18

标签: php xpath

我在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传递给函数以使其工作?

1 个答案:

答案 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