PHP file_get_contents Data acquisition and common problem solving _php tutorials

Source: Internet
Author: User
In bulk data acquisition in PHP rarely use the file_get_contents function to operate, but if it is a small amount of we can use the file_get_contents function, because it is not only useful and easy to learn, let me introduce file_get_ Contents usage and problem solving in the process of use.

First look at the problem

File_get_contents cannot get URLs with ports

For example:

The code is as follows Copy Code
file_get_contents (' http://localhost:12345 ');

Without any access.

The workaround is: Turn off SELinux

1 Permanent method – Requires server restart

Modify the/etc/selinux/config file to set selinux=disabled, and then restart the server.

2 temporary methods – Set system parameters

Using the command Setenforce 0

Report:
Setenforce 1 setting SELinux to become enforcing mode
Setenforce 0 Setting SELinux to become permissive mode


File_get_contents Timeout

The code is as follows Copy Code

function _file_get_contents ($url)
{
$context = stream_context_create (Array (
' http ' = = Array (
' Timeout ' = 180//timeout time in seconds
)
));
Return @file_get_contents ($url, 0, $context);

}

Okay, we can start collecting after the problem has been solved.

The code is as follows Copy Code
Nationwide, judging whether the $request_uri contains HTML
if (!strpos ($_server["Request_uri"], ". html"))
{
$page = "http://qq.ip138.com/weather/";
$html = file_get_contents ($page, ' R ');
$pattern = "/National major cities, counties and the next five days of weather trend forecast online query(.*?) /si ";
The HTML between regular matches
Preg_match ($pattern, $html, $PG);
echo "";
Regular replace remote address to local address
$p =preg_replace ('//weather/(w+)/index.htm/', ' tq.php/$1.html ', $PG [1]);
Echo $p;
}
Province, the judge condition is $request_uri whether contain?
else if (!strpos ($_server["Request_uri"], "?")) {
Yoyo recommends using split to get data, here is the name of the province to get
$province =explode ("/", $_server["Request_uri"]);
$province =explode (".", $province [Count ($province)-1]);
$province = $province [0];
I write my own regular notes, I feel bad, but the effect is equal to the above
Preg_match ('/[^/]+[. ( html)]$/', $_server["Request_uri"], $pro);
$province =preg_replace ('/.html/', ', $pro [0]);
$page = "http://qq.ip138.com/weather/". $province. " /index.htm ";
Try to open the page before getting the HTML data to prevent a malicious input address from causing an error
if (! @fopen ($page, "R")) {
Die ("Sorry, this address does not exist! Click here to return");
Exit (0);
}
$html = file_get_contents ($page, ' R ');
$pattern = "/five-day weather trend forecast(.*?) Please input city/si ";
Preg_match ($pattern, $html, $PG);
echo "";
Regular replacement, get province, city
$p =preg_replace ('//weather/(w+)/(w+). htm/', ' $2.html?pro=$1 ', $PG [1]);
Echo $p;
}
else {
City, pass the province through get
$pro =$_request[' Pro '];
$city =explode ("/", $_server["Request_uri"]);
$city =explode (".", $city [Count ($city)-1]);
$city = $city [0];
Preg_match ('/[^/]+[. ( HTML)]+[?] /', $_server["Request_uri"], $cit);
$city =preg_replace ('/.html?/', ', $cit [0]);
$page = "http://qq.ip138.com/weather/". $pro. " /". $city.". HTM ";
if (! @fopen ($page, "R")) {
Die ("Sorry, this address does not exist! Click here to return");
Exit (0);
}
$html = file_get_contents ($page, ' R ');
$pattern = "/five-day weather trend forecast(.*?) Please input city/si ";
Preg_match ($pattern, $html, $PG);
echo "";
Get the real picture address
$p =preg_replace ('//image//', ' http://qq.ip138.com/image/', $PG [1]);
Echo $p;
}
?>

If the above method cannot collect the data, we can use it to handle

The code is as follows Copy Code
$url = "http://www.bKjia.c0m";
$ch = Curl_init ();
$timeout = 5;
curl_setopt ($ch, Curlopt_url, $url);
curl_setopt ($ch, Curlopt_returntransfer, 1);
curl_setopt ($ch, Curlopt_connecttimeout, $timeout);
Add the following two lines to the Web page that requires user detection
curl_setopt ($ch, Curlopt_httpauth, Curlauth_any);
curl_setopt ($ch, Curlopt_userpwd, Us_name. ":". US_PWD);
$contents = curl_exec ($ch);
Curl_close ($ch);
Echo $contents;
?>

http://www.bkjia.com/PHPjc/633074.html www.bkjia.com true http://www.bkjia.com/PHPjc/633074.html techarticle in bulk data acquisition in PHP rarely use the file_get_contents function to operate, but if it is a small amount we can use the file_get_contents function, because it is not only useful and ...

  • Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.