如何将分析值存储在数据库中?

时间:2013-08-09 04:04:36

标签: php mysql parsing dom

我从这个页面解析了匹配:

$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]

我如何存储?

2 个答案:

答案 0 :(得分:0)

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

你想要的是:

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

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

您正在做的是访问整个对象,您真正想要做的只是获取HTML元素中的文本值(即outertext所在的位置)。

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

答案 1 :(得分:0)

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

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

arrayaccess实现和__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) {
}

代码为here