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 );
|