企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] ## 常用函数 ~~~ (.*?) 子表达式,除换行符\n之外的任何单字符、其前面那个单元出现0次或者以上(任意次数)、其前面那个单元出现0次或1次 file_get_contents 是用来将文件的内容读入到一个字符串中的首选方法,可以发送GET preg_match() 函数 用于执行一个正则表达式匹配,匹配一个 preg_match_all函数 匹配所有 preg_match_all($pattern,$subject,$matches) $pattern: 要搜索的模式,字符串形式。 $subject: 输入字符串。 $matches: 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。 用于执行一个全局正则表达式匹配,搜索 subject 中所有匹配 pattern 给定正则表达式的匹配结果并且将它们以 flag 指定顺序输出到 matches 中。在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索。 ~~~ ## 采集页面curl模式 ``` //生成一个curl对象 $curl=curl_init(); //设置URL和相应的选顶 curl_setopt ($curl,CURLOPT_URL,"http://www.youku.com/"); //将curl_exec()获取的信息以字符串返回,而不是直接输出。 curl_setopt($curL,CURLOPT._RETURNTRANSFER,1); //执行curl操作 $file=curl_exec($curl); var_dump($file); ``` ## 采集页面 file_get_contents() 模式 ``` //使用file_get_contents() $data=file_get_contents("http://www.youku.com"); var_dump ($data); ``` ## 采集网站指定内容 ``` $url="http://www.sohu.com/"; $file = file_get_contents("compress.zlib://".$url); $preg = '#<title>(.*)</title>#isU'; //正则表达式 preg_match($preg , $file ,$result); print_r($result); ``` ``` $url="http://www.sohu.com/"; $file = file_get_contents("compress.zlib://".$url); $preg = '#<a data-clev=".*">(.*)</a>#isU'; //正则表达式 preg_match_all($preg , $file ,$result); print_r($result); ``` **注释**:正则表达式 .\* 代表任意数据;(.\*)是要获取的数据。 ## 采集网站图片保存到本地 ``` $url="http://www.baidu.com/"; $file = file_get_contents("compress.zlib://".$url); //$preg = '#<img src=".*">#isU'; //正则表达式1 $preg = '/<img.*?src="(.*?)".*?>/is'; //正则表达式2 preg_match($preg , $file ,$result); //print_R($result);exit; file_put_contents("baidu.png","http:".$result[0]); ``` ## 采集内容乱码处理 **当内容无法正常获取的时候,分两种情况第一种是防盗链,第二种是页面需要解压** 1、需要解压时----页面收到压缩数据 浏览解压 compress.zlib:实现解压 进行转码即可 ``` $url="http://www.sohu.com/"; echo file_get_contents("compress.zlib://".$url); ``` 2、防盗链情况下解决办法,模拟浏览器 ``` $url="http://www.sohu.com/"; ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)'); $html=file_get_contents($url); //echo $html; echo mb_convert_encoding($html,'utf8','gbk'); //转码 ```