Home > Backend Development > PHP Tutorial > PHP code to obtain remote web content fopen, curl has been tested

PHP code to obtain remote web content fopen, curl has been tested

WBOY
Release: 2016-07-29 08:45:23
Original
1038 people have browsed it

1. How to use fopen

Copy the code The code is as follows:


$handle = fopen ("http://s.jb51.net/", "rb");
$contents = "";
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
echo $contents; //Output the obtained content.
?>


Copy the code The code is as follows:


// For PHP 5 and above, you can use the following code
$handle = fopen("http:// s.jb51.net", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
echo $contents;
?>


But the above code is prone to failed to open stream: HTTP request failed! Error, solution
Some people say that in php.ini, there are two options: allow_url_fopen =on (indicating that remote files can be opened through url), user_agent="PHP" (indicating which script to access Network, by default there is a ";" in front of it (remove it) and restart the server.
But some people still have this warning message. There is still one step left to solve it perfectly. You have to set the user_agent in php.ini. The default user_agent in php is PHP. We change it to Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) to simulate the browser
 PHP 获取远程网页内容的代码fopen,curl已测
user_agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
I encountered this problem at work and solved it perfectly, so I share it with everyone.
2. Implement it through curl

Copy the code The code is as follows:


$url = "http://s.jb51.net";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);
$dxycontent = curl_exec($ch);
echo $dxycontent;
? >


You can use the following code to download under Linux
exec("wget ​​{$url}");
The difference between PHP grabbing external resource functions fopen / file_get_contents / curl
fopen / file_get_contents will redo DNS for each request Query, DNS information is not cached.
But CURL will automatically cache DNS information. Requests for web pages or images under the same domain name only require one DNS query.
This greatly reduces the number of DNS queries.
So the performance of CURL is much better than fopen/file_get_contents.
Original content on this site, please indicate the source when reprinting.

The above has introduced the code fopen and curl for PHP to obtain remote web content. It has been tested, including aspects of the content. I hope it will be helpful to friends who are interested in PHP tutorials.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template