php 的CURL是不错的功能,下面收藏几段不错的片段
0、基本例子
一般流程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
$to_url = $_GET [ 'url' ]; print_r( $_GET ); if ( substr ( $to_url ,0,1)== '/' ){ $to_url = "http://www.amazon.com" . $to_url ; } echo $to_url ; //初始化 $ch = curl_init(); //设置选项,包括URL curl_setopt( $ch , CURLOPT_URL, $to_url ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1); curl_setopt( $ch , CURLOPT_HEADER, 0); //执行并获取HTML文档内容 $output = curl_exec( $ch ); $output =preg_replace( "#href=\"#" , "href=\"http://in2.qq-ex.com/amazon.php?url=" , $output ); // 释放curl句柄 curl_close( $ch ); echo $output ; // 指定代理地址 curl_setopt( $ch , CURLOPT_PROXY, '11.11.11.11:8080' ); // 如果需要的话,提供用户名和密码 curl_setopt( $ch , CURLOPT_PROXYUSERPWD, 'user:pass' ); |
1、测试网站是否运行正常
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
if (isDomainAvailible( 'http://gz.itownet.cn' )) { echo "Up and running!" ; } else { echo "Woops, nothing found there." ; } //returns true, if domain is availible, false if not function isDomainAvailible( $domain ) { //check, if a valid url is provided if (!filter_var( $domain , FILTER_VALIDATE_URL)) { return false; } //initialize curl $curlInit = curl_init( $domain ); curl_setopt( $curlInit ,CURLOPT_CONNECTTIMEOUT,10); curl_setopt( $curlInit ,CURLOPT_HEADER,true); curl_setopt( $curlInit ,CURLOPT_NOBODY,true); curl_setopt( $curlInit ,CURLOPT_RETURNTRANSFER,true); //get answer $response = curl_exec( $curlInit ); curl_close( $curlInit ); if ( $response ) return true; return false; } |
2、可以代替file_gecontents的操作
1
2
3
4
5
6
7
8
9
10
11
12
|
function file_get_contents_curl( $url ) { $ch = curl_init(); curl_setopt( $ch , CURLOPT_HEADER, 0); curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser. curl_setopt( $ch , CURLOPT_URL, $url ); $data = curl_exec( $ch ); curl_close( $ch ); return $data ; } |
3、保存某个网站下的所有图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
function getImages( $html ) { $matches = array (); $regex = '~http://somedomain.com/images/(.*?)\.jpg~i' ; preg_match_all( $regex , $html , $matches ); foreach ( $matches [1] as $img ) { saveImg( $img ); } } function saveImg( $name ) { $url = 'http://somedomain.com/images/' . $name . '.jpg' ; $data = get_data( $url ); file_put_contents ( 'photos/' . $name . '.jpg' , $data ); } $i = 1; $l = 101; while ( $i < $l ) { $html = get_data( 'http://somedomain.com/id/' . $i . '/' ); getImages( $html ); $i += 1; } |
4、FTP应用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// open a file pointer $file = fopen ( "/path/to/file" , "r" ); // the url contains most of the info needed $url = "ftp://username:password@mydomain.com:21/path/to/new/file" ; $ch = curl_init(); curl_setopt( $ch , CURLOPT_URL, $url ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1); // upload related options curl_setopt( $ch , CURLOPT_UPLOAD, 1); curl_setopt( $ch , CURLOPT_INFILE, $fp ); curl_setopt( $ch , CURLOPT_INFILESIZE, filesize ( "/path/to/file" )); // set for ASCII mode (e.g. text files) curl_setopt( $ch , CURLOPT_FTPASCII, 1); $output = curl_exec( $ch ); curl_close( $ch ); |
5、使用curl发送JSON数据
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$data = array ( "name" => "Hagrid" , "age" => "36" ); $data_string = json_encode( $data ); $ch = curl_init( 'http://api.local/rest/users' ); curl_setopt( $ch , CURLOPT_CUSTOMREQUEST, "POST" ); curl_setopt( $ch , CURLOPT_POSTFIELDS, $data_string ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER, true); curl_setopt( $ch , CURLOPT_HTTPHEADER, array ( 'Content-Type: application/json' , 'Content-Length: ' . strlen ( $data_string )) ); $result = curl_exec( $ch ); |