-2

我从这个页面解析了比赛:

$html = file_get_html('http://www.espncricinfo.com/rankings/content/current/page/211271.html');
$es = $html->find('table td[class=left]');

如果我打印值:

echo "Matches: $es[37]";

它的工作正常:

Matches: 48

我想将该值存储在数据库中:

UPDATE Table SET Column1=($es[37]) WHERE Column2='123';

它不工作。如果数据类型是INT它存储为'0',如果数据类型是VARCHAR,那么它存储为table td[class=left]

我怎样才能存储这个?

4

2 回答 2

0

注意这个对象“$es”,注意它可能不是一个数组,而是一个对象。当回显这个对象时,它会调用神奇的 __toString() 方法将对象更改为字符串。

而$es[47]可以获取值,因为它实现了arrayaccess或者它的类型是ArrayObject,因此它可以使用array方法访问它的属性。

一个数组访问实现和 __toString() 示例:

class A implements arrayaccess {
    public function me(){
    }

    public function __toString() {
        return "This is object A\n";
    }

    public function offsetGet($name) {
        return "value is $name\n";
    }

    public function offsetSet($offset, $value) {

    }
    public function offsetExists($offset) {

    }
    public function offsetUnset($offset) {

    }
}
$a= new A();

echo $a;
echo "The string is $a";
echo $a[0];
var_dump($a);

这些代码将输出:

This is object A
The string is This is object A
value is 0
object(A)#1 (0) {
}

代码在这里

于 2013-08-09T05:47:39.413 回答
0

您应该使用 outertext 来获取 td 的值。

你想要的是:

UPDATE Table SET Column1=($es[37]->outertext) WHERE Column2='123';

您可以在http://simplehtmldom.sourceforge.net/manual.htm中的“如何访问 HTML 元素的属性?”下看到一个示例。然后是“提示”。

您正在做的是访问整个对象,而您真正想要做的只是获取 HTML 元素中文本的值(这就是 outertext 的来源)。

在某些情况下,您可能希望在 PHP 中走得更远并将该字符串转换为整数,但我认为 mysql 在这种情况下会为您执行此操作。

于 2013-08-09T05:25:29.320 回答