示例代碼
<?php
$url=
$html=file_get_contents($url);
//print_r($http_response_header);
ec($html);
printhr();
printarr($http_response_header);
printhr();
?>
示例代碼
<?
$fp=fopen($url
printarr(stream_get_meta_data($fp));
printhr();
while(!feof($fp)){
$result
}
echo"url body:$result";
printhr();
fclose($fp);
?>
示例代碼
<?php
$data=array(
$data=http_build_query($data);
$opts=array(
"Content
)
);
$context=stream_context_create($opts);
$html=file_get_contents(
echo$html;
?>
示例代碼
<?
functionget_url($url
$url=parse_url($url);
$query=$url[path]
ec("Query:"
$fp=fsockopen($url[host]
if(!$fp){
returnfalse;
}else{
$request="GET$queryHTTP/
$request
$request
if($cookie)$request
$request
fwrite($fp
while(!@feof($fp)){
$result
}
fclose($fp);
return$result;
}
}
//獲取url的html部分
functionGetUrlHTML($url
$rowdata=get_url($url
if($rowdata)
{
$body=stristr($rowdata
$body=substr($body
return$body;
}
returnfalse;
}
?>
示例代碼
<?
functionHTTP_Post($URL
// parsing the given URL
$URL_Info=parse_url($URL);
// Building referrer
if($referrer=="")// if not given use this script
$referrer="
// making string from $data
foreach($dataas$key=>$value)
$values[]="$key="
$data_string=implode("&"
// Find out which port is needed
if(!isset($URL_Info["port"]))
$URL_Info["port"]=
// building POST
$request
$request
$request
$request
$request
$request
$request
$request
$request
$fp=fsockopen($URL_Info["host"]
fputs($fp
while(!feof($fp)){
$result
}
fclose($fp);
return$result;
}
printhr();
?>
示例代碼
<?
$ch = curl_init();
$timeout =
curl_setopt ($ch
curl_setopt ($ch
curl_setopt ($ch
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>
關於curl庫
curl官方網站
curl 是使用URL語法的傳送文件工具
<?
functionprintarr(array$arr)
{
echo"<br> Row field count: "
foreach($arras$key=>$value)
{
echo"$key=$value <br>";
}
}
?>
======================================================
PHP抓取遠程網站數據的代碼
現在可能還有很多程序愛好者都會遇到同樣的疑問
Ⅰ
以下是代碼片段
<?php
/*
+
+抓取網頁標題的代碼
+
*/
error_reporting(
$file = fopen ("
if (!$file) {
echo "<font color=red>Unable to open remote file
exit;
}
while (!feof ($file)) {
$line = fgets ($file
if (eregi ("<title>(
$title = $out[
echo ""
break;
}
}
fclose($file);
//End
?>
Ⅱ
以下是代碼片段
<? php
/*
+
+DNSing Sprider
+
*/
$fp = fsockopen("www
if (!$fp) {
echo "$errstr ($errno)<br/>n";
} else {
$out = "GET / HTTP/
$out
$out
fputs($fp
while (!feof($fp)) {
echo fgets($fp
}
fclose($fp);
}
//End
?>
以上兩個代碼片段都直接Copy回去運行就知道效果了
===============================
稍微有點意義的函數是
<?php
//獲取所有內容url保存到文件
function get_index($save_file
$count =
$i =
if (file_exists($save_file)) @unlink($save_file);
$fp = fopen($save_file
while($i<$count){
$url = $prefix
echo "Get "
$url_str = get_content_url(get_url($url));
echo " OKn";
fwrite($fp
++$i;
}
fclose($fp);
}
//獲取目標多媒體對象
function get_object($url_file
if (!file_exists($url_file)) die($url_file
$file_arr = file($url_file);
if (!is_array($file_arr) || empty($file_arr)) die($url_file
$url_arr = array_unique($file_arr);
if (file_exists($save_file)) @unlink($save_file);
$fp = fopen($save_file
foreach($url_arr as $url){
if (empty($url)) continue;
echo "Get "
$html_str = get_url($url);
echo $html_str;
echo $url;
exit;
$obj_str = get_content_object($html_str);
echo " OKn";
fwrite($fp
}
fclose($fp);
}
//遍歷目錄獲取文件內容
function get_dir($save_file
$dp = opendir($dir);
if (file_exists($save_file)) @unlink($save_file);
$fp = fopen($save_file
while(($file = readdir($dp)) != false){
if ($file!="
echo "Read file "
$file_content = file_get_contents($dir
$obj_str = get_content_object($file_content);
echo " OKn";
fwrite($fp
}
}
fclose($fp);
}
//獲取指定url內容
function get_url($url){
$reg =
if (!preg_match($reg
$fp = fopen($url
while($fc = fread($fp
$content
}
fclose($fp);
if (empty($content)){
die("Get url: "
}
return $content;
}
//使用socket獲取指定網頁
function get_content_by_socket($url
$fp = fsockopen($host
$header = "GET /"
$header
$header
$header
$header
$header
$header
//$header
$header
fwrite($fp
while (!feof($fp)) {
$contents
}
fclose($fp);
return $contents;
}
//獲取指定內容裡的url
function get_content_url($host_url
//$reg =
//$reg =
$rex = "/([hH][rR][eE][Ff])s*=s*[
$reg =
preg_match_all ($rex
$result = ""; //array();
foreach($r as $c){
if (is_array($c)){
foreach($c as $d){
if (preg_match($reg
}
}
}
return $result;
}
//獲取指定內容中的多媒體文件
function get_content_object($str
$regx = "/hrefs*=s*[
preg_match_all($regx
if (count($result) ==
$result[
$result[
$result = $result[
}
return $result;
}
?>
======================================================
同一域名對應多個IP時
fgc就是簡單的讀取過來
fopen也進行了一些封裝
fsockopen這是直板板的socket操作
如果僅僅是讀取一個html頁面
如果公司是通過防火牆上網
如果你能確認文件很小
如果確定文件很大
PHP獲取遠程網頁內容有多種方式
<?php
echo file_get_contents("
?>
但 是
上周做一個視頻項目時
這時就不能直接用file_get_contents訪問了
而 采用依次訪問
通過設置本地hosts也不行
那就只有通過PHP和HTTP協議來實現
<?php
/************************
* 函數用途
* 參數說明
* $ip服務器的IP地址
* $host服務器的host名稱
* $url服務器的URL地址(不含域名)
* 返回值
* 獲取到的遠程網頁內容
* false訪問遠程網頁失敗
************************/
function HttpVisit($ip
{
$errstr =
$errno =
$fp = fsockopen ($ip
if (!$fp)
{
return false;
}
else
{
$out = "GET {$url} HTTP/
$out
$out
fputs ($fp
while($line = fread($fp
$response
}
fclose( $fp );
//去掉Header頭信息
$pos = strpos($response
$response = substr($response
return $response;
}
}
//調用方法
$server_info
$server_info
$server_info
?>
From:http://tw.wingwit.com/Article/program/PHP/201311/20975.html