log(new Log($project)); $data = $doc->get(); if ($data) { if (!is_array($data) && !is_object($data)) { $state = Dever::json_decode($data); if ($state) { $data = $state; } } if ($data) { if (is_array($data)) { $domain = parse_url($url); $host = $domain['scheme'] . '://' . $domain['host']; foreach ($data as $k => $v) { if (!strstr($v, 'http')) { $v = $host . $v; } $this->data[$k] = $this->load($doc, $v, $col, $project); } } else { $this->data = $this->load($doc, $data, $col, $project); } } } $doc->saveLog(); } public function get() { return $this->data; } private function load($doc, $data, $col, $project) { $result = $table = array(); $data = $doc->init($data); if (!$col) { if (Dever::input('test') == 1) { $doc->outLog(); echo 'error';die; } return false; } foreach ($col as $v) { $callback = false; if (strpos($v['key'], '.') !== false) { $temp = explode('.', $v['key']); $v['key'] = $temp[1]; $callback = $temp[0]; } $value = $doc->rule($data, $col, $v); if ($value == 'error') { break; } if ($callback) { if (function_exists($callback)) { $value = $callback($value); } else { $value = Dever::{$callback}($value); } } $result[$v['key']] = $value; if (Dever::input('test') == 1) { $table[$v['name']] = $value; } } if (Dever::input('test') == 1) { $doc->outLog(); print_r(Dever::table($table));die; } $this->update($result, $project); return $result; } private function update($data, $project) { $param['option_pid'] = $project; $param['option_value'] = json_encode($data, JSON_UNESCAPED_UNICODE); $info = Dever::db('spider/data')->one($param); if ($info) { $update = array(); foreach ($param as $i => $j) { $i = str_replace('option_', 'set_', $i); $update[$i] = $j; } $id = $update['where_id'] = $info['id']; Dever::db('spider/data')->update($update); } else { $update = array(); foreach ($param as $i => $j) { $i = str_replace('option_', 'add_', $i); $update[$i] = $j; } $id = Dever::db('spider/data')->insert($update); } } }