V2.2.0,修复了一个BUG以及乱码问题并解决了内存占用过大问题

This commit is contained in:
HJ 2014-11-26 00:26:25 +08:00
parent 0b95dea350
commit 6f973149e4

View File

@ -7,7 +7,7 @@
* @author Jaeger * @author Jaeger
* @email 734708094@qq.com * @email 734708094@qq.com
* @link http://git.oschina.net/jae/QueryList * @link http://git.oschina.net/jae/QueryList
* @version 2.1.0 * @version 2.2.0
* *
* @example * @example
* *
@ -163,6 +163,7 @@ class QueryList
} else { } else {
while (list($key, $reg_value) = each($this->regArr)) { while (list($key, $reg_value) = each($this->regArr)) {
if($key=='callback')continue; if($key=='callback')continue;
$hobj = phpQuery::newDocumentHTML($this->html);
$tags = isset($reg_value[2])?$reg_value[2]:''; $tags = isset($reg_value[2])?$reg_value[2]:'';
$lobj = pq($hobj)->find($reg_value[0]); $lobj = pq($hobj)->find($reg_value[0]);
$i = 0; $i = 0;
@ -193,6 +194,7 @@ class QueryList
//编码转换 //编码转换
$this->jsonArr = $this->_arrayConvertEncoding($this->jsonArr, $this->outputEncoding, $this->htmlEncoding); $this->jsonArr = $this->_arrayConvertEncoding($this->jsonArr, $this->outputEncoding, $this->htmlEncoding);
} }
phpQuery::$documents = array();
} }
/** /**
* 获取文件编码 * 获取文件编码
@ -204,7 +206,7 @@ class QueryList
return mb_detect_encoding($string, array('ASCII', 'GB2312', 'GBK', 'UTF-8')); return mb_detect_encoding($string, array('ASCII', 'GB2312', 'GBK', 'UTF-8'));
} }
/** /**
* 递归转换数组值得编码格式 * 转换数组值的编码格式
* @param array $arr * @param array $arr
* @param string $toEncoding * @param string $toEncoding
* @param string $fromEncoding * @param string $fromEncoding
@ -212,16 +214,7 @@ class QueryList
*/ */
private function _arrayConvertEncoding($arr, $toEncoding, $fromEncoding) private function _arrayConvertEncoding($arr, $toEncoding, $fromEncoding)
{ {
if (!is_array($arr)) { eval('$arr = '.iconv($fromEncoding, $toEncoding.'//IGNORE', var_export($arr,TRUE)).';');
return $arr;
}
foreach ($arr as $key => $value) {
if (is_array($value)) {
$arr[$key] = $this->_arrayConvertEncoding($value, $toEncoding, $fromEncoding);
} else {
$arr[$key] = mb_convert_encoding($value, $toEncoding, $fromEncoding);
}
}
return $arr; return $arr;
} }
/** /**
@ -293,12 +286,18 @@ class QueryList
private function _removeTags($html,$tags) private function _removeTags($html,$tags)
{ {
$tag_str = ''; $tag_str = '';
if(count($tags))
{
foreach ($tags as $tag) { foreach ($tags as $tag) {
$tag_str .= $tag_str?','.$tag:$tag; $tag_str .= $tag_str?','.$tag:$tag;
} }
phpQuery::$defaultCharset = $this->htmlEncoding;
$doc = phpQuery::newDocumentHTML($html); $doc = phpQuery::newDocumentHTML($html);
pq($doc)->find($tag_str)->remove(); pq($doc)->find($tag_str)->remove();
return pq($doc)->htmlOuter(); $html = pq($doc)->htmlOuter();
$doc->unloadDocument();
}
return $html;
} }
} }