| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- <?php
 
- namespace Spider\Lib\Doc;
 
- include(DEVER_APP_PATH . 'third/phpQuery.php');
 
- use Dever;
 
- use phpQuery;
 
- class Dom
 
- {
 
- 	public static function init($html)
 
- 	{
 
- 		if (strstr($html, 'gb2312')) {
 
- 			$html = str_replace('gb2312', 'utf-8', $html);
 
- 		}
 
- 		return phpQuery::newDocumentHTML($html);
 
- 	}
 
- 	public static function find($dom, $rule)
 
- 	{
 
- 		list($rule, $attr) = self::each($rule);
 
- 		$rule = str_replace(array('$', ').', '$dom->find.'), array('$dom->find', ')->', '$dom->'), $rule);
 
- 		$cmd = '$dom = ' . $rule . ';';
 
- 		eval($cmd);
 
- 		return self::findAttr($dom, $attr);
 
- 	}
 
- 	public static function each($rule)
 
- 	{
 
- 		$attr = '';
 
- 		if (strpos($rule, '.each().') !== false) {
 
- 			$temp = explode('.each()', $rule);
 
- 			$rule = $temp[0];
 
- 			$attr = '$' . $temp[1];
 
- 		}
 
- 		return array($rule, $attr);
 
- 	}
 
- 	public static function findAttr($dom, $attr)
 
- 	{
 
- 		if (!$attr) {
 
- 			return $dom;
 
- 		}
 
- 		$data = array();
 
- 		foreach ($dom as $k => $v) {
 
- 			$data[] = self::find(pq($v), $attr);
 
- 		}
 
- 		return json_encode($data, JSON_UNESCAPED_UNICODE);
 
- 	}
 
- 	public static function get($data)
 
- 	{
 
- 		return pq($data);
 
- 	}
 
- 	public static function rule($doc, $dom, $col, $rule, $key)
 
- 	{
 
- 		$result = Core::rule($doc, $dom, $col, $rule, $key);
 
- 		return $result;
 
- 	}
 
- }
 
 
  |