|

楼主 |
发表于 2009-6-20 07:01:32
|
显示全部楼层
本帖最后由 hiqq 于 2009-6-20 07:12 编辑
采用php程序将网页源代码采集过来,截取body里的数据,并查看每个字符的asii编码。
- $str = @file_get_contents('http://www.jianshe23.cn/test.htm');
- $str&&preg_match_all('/<body>([\s\S]*?)<\/body>/i',$str$m);
- $str = $m[1][0];
- $n = $tn = $n1 = 0;
- echo $str.'<br>';
- echo '字符|编码<br>';
- while($n < strlen($str))
- {
- $t = ord($str[$n]);
- $n1 = $n ;
- if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
- $tn = 1; $n++; $noc++;
- } elseif(194 <= $t && $t <= 223) {
- $tn = 2; $n += 2;
- } elseif(224 <= $t && $t <= 239) {
- $tn = 3; $n += 3;
- } elseif(240 <= $t && $t <= 247) {
- $tn = 4; $n += 4;
- } elseif(248 <= $t && $t <= 251) {
- $tn = 5; $n += 5;
- } elseif($t == 252 || $t == 253) {
- $tn = 6; $n += 6;
- } else {
- $n++;
- }
- $tstr = '';
- for($i=$n1;$i<$n;$i++){
- $tstr .='\\'.ord($str[$i]);
- }
-
- echo substr($str, $n1, $tn).'|'.$tstr.'<br>';
- }
复制代码 ===输出结果===
火车头信息采集测试内容
字符|编码
|\0
火|\231\129\171
车|\232\189\166
头|\229\164\180
信|\228\191\161
息|\230\129\175
采|\233\135\135
集|\233\155\134
测|\230\181\139
试|\232\175\149
内|\229\134\133
容|\229\174\185
==========
终于找到了一点眉目,内容中藏有null字符,即ascii码值为0的。
但是即使使用正则表达式:- <body>(?<content>[\s\S]*?)</body>
复制代码 也还是采集不了!大家都来想想办法吧! |
|