html抓取的时候经常会出现html代码错乱问题,怎么修复呢?这就需要PHPtidy这个利器了。一般php会默认带的。
具体用法就不多说了。直接贴代码:
/**
* 清理html并纠错
*/
function tidyHtml($html) {
$b = mb_detect_encoding($html);
if($b != 'UTF-8'){
$html = mb_convert_encoding($html, 'UTF-8');
}
$tidy = new tidy;
$tidy->parseString($html,array(),'UTF8');
$tidy->cleanRepair();
$txt = $tidy->html()->value;
preg_match_all('/\
(.*)\<\/body\>/msi',$txt,$ret);
$ret = $ret[1][0];
// $ret = strip_tags($ret,'
php解析xml到php数组是个问题,不太好搞。看了下往上经典的处理方式就是
$b = json_decode(json_encode((array)$xml),true);
这个方式有个问题就是<![CDATA[会被处理为空得数据
不得已自己写了一个函数处理这个问题
function xml2Array($xml) {
$arr = null;
if($xml->attributes() ) {
foreach($xml->attributes() as $k=>$v) {
$arr['@a'][$k]= $v->__toString();
}
}
/*
if($xml->getName() == 'description') {
var_dump($xml);
var_dump($xml->count());exit;
}
*/
if($xml->count()) {
foreach($xml as $v) {
$va = $v->getName();
if($xml->count() > 0){
$va = $v->getName();
if(count($xml->$va) > 1) {
$arr[$v->getName()][]= xml2Array($v);
} else {
$arr[$v->getName()] = xml2Array($v);
}
} else {
$arr[$v->getName()] = xml2Array($v);
}
}
} else {
if($arr['@a']) {
$arr['_v'] = $xml->__toString();
} else {
$arr = $xml->__toString();
}
}
return $arr;
}
又一次搭建起来了这个博客,以后可以长期开始写博客了。。吼吼
计划:
1,自己运营一个网站。。。
2,写技术博客