好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php中fsockopen采集网页内容实例 - php高级应用

php中fsockopen采集网页内容实例

fsockopen是php中一个比较实用的函数了,下面我来介绍利用fsockopen函数来采集网页的程序.

用法: int fsockopen(string hostname,int port,int [errno],string [errstr],int [timeout]);

一个采集网页实例,代码如下:

<?php  function  get_url ( $url , $cookie =false)  {  $url  =  parse_url ( $url );  $query  =  $url [path].]?]. $url [query];  echo  [Query:]. $query ;  $fp  =  fsockopen (  $url [host],  $url [port]? $url [port]:80 ,  $errno ,  $errstr , 30);  if  (! $fp ) {  return  false;  }  else  {  $request  = [GET  $query  HTTP/1.1rn];  $request  .= [Host:  $url [host]rn];  $request  .= [Connection: Closern];  if ( $cookie )  $request .=]Cookie:    $cookien ];  $request .=]rn];  fwrite( $fp , $request );  while (!@ feof ( $fp )) {  $result  .= @ fgets ( $fp , 1024);  }  fclose( $fp );  return   $result ;  }  }  //获取url的html部分,去掉header   function  GetUrlHTML( $url , $cookie =false)  {  $rowdata  = get_url( $url , $cookie );  if ( $rowdata ) //开源代码phpfensi测试数据   {  $body =  stristr ( $rowdata ,]rnrn]);  $body = substr ( $body ,4, strlen ( $body ));  return   $body ;  }         return  false;  }  ?> 

被禁用后的解决方法:

服务器同时禁用了fsockopen pfsockopen,那么用其他函数代替,如stream_socket_client(),注意:stream_socket_client()和fsockopen()的参数不同.

fsockopen:替换为 stream_socket_client,然后,将原fsockopen函数中的端口参数[80]删掉,并加到$host.

例,代码如下:

$fp  =  fsockopen ( $host , 80,  $errno ,  $errstr , 30);  //或   $fp  =  fsockopen ( $host ,  $port ,  $errno ,  $errstr ,  $connection_timeout );  //修改后:   $fp  = stream_socket_client( "tcp://" . $host . "80" ,  $errno ,  $errstr , 30);  //或   $fp  = stream_socket_client( "tcp://" . $host . ":" . $port ,  $errno ,  $errstr ,  $connection_timeout );

查看更多关于php中fsockopen采集网页内容实例 - php高级应用的详细内容...

  阅读:42次