php源码之使用fsockopen获取网页内容

时间:2016-09-08
php获取网页内容的方法有很多,比如使用file_put_contents()、curl、fsockopen等,本文章将向大家介绍fsockopen获取网页内容的实现方法和源码,需要的朋友可以参考一下。

PHP fsockopen函数说明:

Open Internet or Unix domain socket connection(打开套接字链接)

Initiates a socket connection to the resource specified by target .

fsockopen() returns a file pointer which may be used together with the other file functions (such as fgets() , fgetss() , fwrite() , fclose() , and feof() ).就是返回一个文件句柄

开启PHP fsockopen这个函数

PHP fsockopen需要 PHP.ini 中 allow_url_fopen 选项开启。

使用fsockopen获取网页内容

具体源代码如下:

<?php
$host = "www.manongjc.com";
$page = "/index.htm";
$fp = fsockopen( "$host", 80, $errno, $errdesc );
if ( ! $fp ) {
  die ( "Couldn't connect to $host:\nError: $errno\nDesc: $errdesc\n" );
}

$request = "GET $page HTTP/1.0\r\n";
$request .= "Host: $host\r\n";
$request .= "Referer: http://www.manongjc.com/page.html\r\n";
$request .= "User-Agent: PHP test client\r\n\r\n";

$page = array();
fputs ( $fp, $request );
while ( ! feof( $fp ) ) {
  $page[] = fgets( $fp, 1024 );
}
fclose( $fp );
print "the server returned ".(count($page))." lines!";
?>