当前位置:  编程技术>php
本页文章导读:
    ▪curl数据采集系列之正则处理函数get_matches        根据前两篇的博文:  curl数据采集系列之单页面采集函数get_html   curl数据采集系列之多页面并行采集函数get_htmls   已经可以得到了我们需要的html文件,现在需要处理得到.........
    ▪PHP 输出九九乘法表      PHP 输出九九乘法表:<?php echo "<table width=550px border='1'>"; //确定行 for($i=1;$i<=9;$i++){ echo "<tr>"; for($j=1;$j<=$i;$j++){ $res=$i*$j; echo "<td>"; .........
    ▪PHP开发环境搭建      apache2.2.X和PHP5.2.X环境搭建指南 1.下载并安装apache2.2.Xhttp://mirror.bjtu.edu.cn/apache//httpd/binaries/win32/下载 httpd-2.2.21-win32-x86-no_ssl.msi 2.下载PHP5.2.Xhttp://windows.php.net/download/下载 php-5.2.17-W.........

[1]curl数据采集系列之正则处理函数get_matches
    来源:    发布时间: 2013-11-07

  根据前两篇的博文:

  curl数据采集系列之单页面采集函数get_html 

  curl数据采集系列之多页面并行采集函数get_htmls 

  已经可以得到了我们需要的html文件,现在需要处理得到的文件获取到我们需要的采集的数据。

  对于html文档的解析,没有像XML那样的解析类,因为HTML文档有很多不成对的标签,很不严格。这个时候就需要采用其他的一些辅助类了,simplehtmldom是一个类似于JQuery方式操作HTML文档的解析类。可以很方便的得到想要的数据,可惜速度慢。这里不是我们这里讨论的重点,我主要使用正则来匹配我所需要的采集的数据,可以很快速的得到我需要采集的信息。

  考虑到get_html可以判断返回的数据,但是get_htmls没有办法判断,为了方便调式和调用写了如下两个函数:

  

1 function get_matches($pattern,$html,$err_msg,$multi=false,$flags=0,$offset=0){
2 if(!$multi){
3 if(!preg_match($pattern,$html,$matches,$flags,$offset)){
4 echo $err_msg."! 错误信息: ".get_preg_err_msg()."\n";
5 return false;
6 }
7 }else{
8 if(!preg_match_all($pattern,$html,$matches,$flags,$offset)){
9 echo $err_msg."! 错误信息: ".get_preg_err_msg()."\n";
10 return false;
11 }
12 }
13 return $matches;
14 }
15 function get_preg_err_msg(){
16 $error_code = preg_last_error();
17 switch($error_code){
18 case PREG_NO_ERROR :
19 $err_msg = 'PREG_NO_ERROR';
20 break;
21 case PREG_INTERNAL_ERROR:
22 $err_msg = 'PREG_INTERNAL_ERROR';
23 break;
24 case PREG_BACKTRACK_LIMIT_ERROR:
25 $err_msg = 'PREG_BACKTRACK_LIMIT_ERROR';
26 break;
27 case PREG_RECURSION_LIMIT_ERROR:
28 $err_msg = 'PREG_RECURSION_LIMIT_ERROR';
29 break;
30 case PREG_BAD_UTF8_ERROR:
31 $err_msg = 'PREG_BAD_UTF8_ERROR';
32 break;
33 case PREG_BAD_UTF8_OFFSET_ERROR:
34 $err_msg = 'PREG_BAD_UTF8_OFFSET_ERROR';
35 break;
36 default:
37 return '未知错误!';
38 }
39 return $err_msg.': '.$error_code;
40 }

可以这样调用:

1 $url = 'http://www.baidu.com';
2 $html = get_html($url);
3 $matches = get_matches('!<a[^<]+</a>!',$html,'没有找到链接',true);
4 if($matches){
5 var_dump($matches);
6 }

或者这样调用:

1 $urls = array('http://www.baidu.com','http://www.hao123.com');
2 $htmls = get_htmls($urls);
3 foreach($htmls as $html){
4 $matches = get_matches('!<a[^<]+</a>!',
    
[2]PHP 输出九九乘法表
    来源:    发布时间: 2013-11-07

PHP 输出九九乘法表:

<?php

echo "<table width=550px border='1'>";
//确定行
for($i=1;$i<=9;$i++){

echo "<tr>";
for($j=1;$j<=$i;$j++){
$res=$i*$j;
echo "<td>";
echo "$j"."x"."$i=".$res;
echo "</td>";
}
echo "</tr>";
}

echo "</table>";
?>

 

本文链接


    
[3]PHP开发环境搭建
    来源:    发布时间: 2013-11-07
apache2.2.X和PHP5.2.X环境搭建指南
 
1.下载并安装apache2.2.X
http://mirror.bjtu.edu.cn/apache//httpd/binaries/win32/
下载 httpd-2.2.21-win32-x86-no_ssl.msi
 
2.下载PHP5.2.X
http://windows.php.net/download/
下载 php-5.2.17-Win32-VC6-x86.zip
 
3.配置
C:\apache\conf\http.conf
LoadModule php5_module c:/php/php5apache2_2.dll
AddType application/x-httpd-php .php
PHPIniDir "c:/php"
 
4.测试
 
 
5.注意事项:
1. PHP下载VC6线程安全版本,thread safe版的安装过程中有apache 2.2.x module选项
 

本文链接


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3