我从这个页面解析了匹配:
$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]
。
我如何存储?
答案 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