-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 であるため、値を取得できます。したがって、配列メソッドを使用してプロパティにアクセスできます。

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) {
}

コードはこちら

于 2013-08-09T05:47:39.413 に答える