curl 采集

为君一笑 提交于 2019-11-28 01:16:55

正则表达式的复习

.   匹配除换行符以外的任意字符

\w  匹配字母或数字或下划线或汉字【应该是word的首字母】

\s  匹配任意的空白符    【space首字母】

\d  匹配数字          【英文Digital的首位字母吧】

\b  匹配单词的开始或结束 【begin首字母】

^   匹配字符串的开始

$   匹配字符串的结束

*   重复零次或更多次

+   重复一次或更多次

?   重复零次或一次

{n} 重复n次

{n,}    重复n次或更多次

{n,m}   重复n到m次

 

//反义

\W  匹配任意不是字母,数字,下划线,汉字的字符

\S  匹配任意不是空白符的字符

\D  匹配任意非数字的字符

\B  匹配不是单词开头或结束的位置

[^x]    匹配除了x以外的任意字符

[^aeiou]    匹配除了aeiou这几个字母以外的任意字符

PHP正则表达式模式后面通常带有 /i, /is, /s, /isU等参数说明

i  匹配大小写

s 模式中的圆点元字符(.)匹配所有的字符,包括换行符

x 模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两 头,也都被忽略

A (PCRE_ANCHORED) 如果设定了此修正符,模式被强制为“anchored”,即强制仅从目标字符串的开头开始匹配即自动在模式开头加上^。

D (PCRE_DOLLAR_ENDONLY) 如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配 任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。Perl 中没有与其等价的修正符。  S 当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。 

U (PCRE_UNGREEDY) 本修正符反转了匹配数量的值使其不是默认的重复,而变成在后面跟上“?”才变得重复。这和 Perl 不兼容。也可以通过在模式之中设定 (?U) 修正符来启用此选项。

X (PCRE_EXTRA) 此 修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式中的任何反斜线后面跟上一个没有特殊意义的字母导致一个错误,从而保留此组合以备将 来扩充。默认情况下,和 Perl 一样,一个反斜线后面跟一个没有特殊意义的字母被当成该字母本身。当前没有其它特性受此修正符控制。即:贪婪模式,最 大限度匹配 如:/a[/w]+?e/U匹配abceadeddd中的abceade而不是abce,如果不加U修正,则匹配abce  u (PCRE_UTF8) 此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式字符串被当成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。

 

php的正则相关的函数

PCRE 函数

函数

描述

preg_filter

执行一个正则表达式搜索和替换

preg_grep

返回匹配模式的数组条目

preg_last_error

返回最后一个PCRE正则执行产生的错误代码

preg_match_all

执行一个全局正则表达式匹配

preg_match

执行一个正则表达式匹配

preg_quote

转义正则表达式字符

preg_replace_callback_array

执行一个正则表达式搜索并且使用一个回调进行替换

preg_replace_callback

执行一个正则表达式搜索并且使用一个回调进行替换

preg_replace

执行一个正则表达式的搜索和替换

preg_split

通过一个正则表达式分隔字符串

重点函数的语法:

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

搜索 subject 中所有匹配 pattern 给定正则表达式的匹配结果并且将它们以 flag 指定顺序输出到 matches 中。

在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索。

参数说明:

l  $pattern: 要搜索的模式,字符串形式。

l  $subject: 输入字符串。

l  $matches: 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。

l  $flags:可以结合下面标记使用(注意不能同时使用PREG_PATTERN_ORDER和 PREG_SET_ORDER):

a)     PREG_PATTERN_ORDER: 结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。

b)     PREG_SET_ORDER: 结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。

c)     PREG_OFFSET_CAPTURE: 如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。

l  offset: 通常, 查找时从目标字符串的开始位置开始。可选参数offset用于 从目标字符串中指定位置开始搜索(单位是字节)。

 

preg_match 函数用于执行一个正则表达式匹配。

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

l  $pattern: 要搜索的模式,字符串形式。

l  $subject: 输入字符串。

l  $matches: 如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。

l  $flags:flags 可以被设置为以下标记值:

d)     PREG_OFFSET_CAPTURE: 如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。 注意:这会改变填充到matches参数的数组,使其每个元素成为一个由 第0个元素是匹配到的字符串,第1个元素是该匹配字符串 在目标字符串subject中的偏移量。

l  offset: 通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于 指定从目标字符串的某个未知开始搜索(单位是字节)。

两个函数的区别:

preg_match 匹配到一次就会停止,设置匹配到的一个匹配

preg_match_all 会一直匹配下去。直到字符串结束,设置匹配到的所有匹配【推荐】

 

 

curl   [Client URL Library Functions]

PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

curl是客户端向服务器端请求的一个工具

 cURL是一个强大的库,能够连接通讯各种服务器、使用各种协议。同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

 

 

 

 

对于网页资源

     --编写爬虫

websevice数据接口资源

      --可以动态获取接口上的数据,比如天气预报、号码归属地、短信

ftp服务器 里面的文件资源

     --下载ftp服务器里面的文件

其他的资源

   --所有网络桑的资源都可以用curl访问和下载。

 

curl( curl  is  a   command  ling  tool  for    transferrng  data  whih  URL ) 采集url传输数据的命令工具

 

 

常用函数

Curl_init();

curl_setopt($curl,CURLOPT_URL,$url);//设置访问网页的地址  url

curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);//执行之后不再打印输出 returntransfer

 

//提交数据

curl_setopt($curl,CURLOPT_POST,true);//以post方式进行提交  post

curl_setopt($curl,CURLOPT_POSTFIELDS,$name);//设置以post方式提交的数据  postfilds

 

//遇到采集的地址是https

curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);//对认证证书的来源不检测

curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);//从证书中国检测ssl算法  不检测

 

//遇到采集地址有重定向的时候

curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);//采集地址有重定向的时候 followlocation

 

curl_close();

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!