curl ist eine Bibliothek, die speziell für die Netzwerkinteraktion verwendet wird. Sie bietet eine Reihe von Anpassungsoptionen für den Umgang mit verschiedenen Umgebungen. Die Stabilität ist natürlich größer als bei file_get_contents.
Grund für die Wahl von Curl
In Bezug auf Curl und file_get_contents finden Sie hier einen leicht verständlichen Vergleich:file_get_contents ist eigentlich eine zusammengeführte Version einer Reihe integrierter Dateioperationsfunktionen wie file_exists, fopen, fread, fclose, Speziell für faule Benutzer bereitgestellt. Es wird hauptsächlich für den Umgang mit lokalen Dateien verwendet. Aufgrund fauler Benutzer wird jedoch auch Unterstützung für Netzwerkdateien hinzugefügt.
Curl ist eine Bibliothek, die speziell für die Netzwerkinteraktion verwendet wird Benutzerdefinierte Heap-Optionen werden für den Umgang mit unterschiedlichen Umgebungen verwendet und ihre Stabilität ist natürlich größer als die von file_get_contents.
So verwenden Sie
1. Aktivieren Sie die Curl-Unterstützung Da die Curl-Unterstützung nach der Installation der PHP-Umgebung nicht standardmäßig aktiviert ist, Sie müssen die Datei php.ini ändern, „extension=php_curl.dll“ finden, den Doppelpunkt davor entfernen und den Dienst neu starten;2. Verwenden Sie Curl, um Daten zu erfassenDer Code lautet wie folgt:// 初始化一个 cURL 对象 $curl = curl_init(); // 设置你需要抓取的URL curl_setopt($curl, CURLOPT_URL, 'http://www.cmx8.cn'); // 设置header curl_setopt($curl, CURLOPT_HEADER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 运行cURL,请求网页 $data = curl_exec($curl); // 关闭URL请求 curl_close($curl);
//$data是curl_exec返回的的值,即采集的目标内容 preg_match_all("/<li class=\"item\">(.*?)<\/li>/",$data, $out, PREG_SET_ORDER); foreach($out as $key => $value){ //此处$value是数组,同时记录找到带匹配字符的整句和单独匹配的字符 echo '匹配到的整句:'.$value[0].' '; echo '单独匹配到的:'.$value[1].' '; }
CURLOPT_TIMEOUT_MS legt die maximale Anzahl von Millisekunden fest, die cURL ausführen darf. (Hinzugefügt in cURL 7.16.2. Verfügbar ab PHP 5.2.3.)
CURLOPT_CONNECTTIMEOUT Die Zeit, die vor dem Initiieren einer Verbindung gewartet werden soll. Wenn sie auf 0 gesetzt ist, wird auf unbestimmte Zeit gewartet.
CURLOPT_CONNECTTIMEOUT_MS Die Zeit, die auf einen Verbindungsversuch gewartet wird, in Millisekunden. Wenn auf 0 gesetzt, unendlich warten. Hinzugefügt in cURL 7.16.2. Verfügbar ab PHP 5.2.3.
CURLOPT_DNS_CACHE_TIMEOUT legt die Zeit zum Speichern von DNS-Informationen im Speicher fest. Der Standardwert beträgt 120 Sekunden.
curl_setopt($ch, CURLOPT_TIMEOUT, 60); //只需要设置一个秒的数量就可以 curl_setopt($ch, CURLOPT_NOSIGNAL, 1); //注意,毫秒超时一定要设置这个 curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200); //超时毫秒,cURL 7.16.2中被加入。从PHP 5.2.3起可使用
//以下摘抄一个例子过来,用于学习借鉴: //Curl 模拟登录 discuz 程序,适合DZ7.0 !extension_loaded('curl') && die('The curl extension is not loaded.'); $discuz_url = 'http://www.lxvoip.com';//论坛地址 $login_url = $discuz_url .'/logging.php?action=login';//登录页地址 $get_url = $discuz_url .'/my.php?item=threads'; //我的帖子 $post_fields = array(); //以下两项不需要修改 $post_fields['loginfield'] = 'username'; $post_fields['loginsubmit'] = 'true'; //用户名和密码,必须填写 $post_fields['username'] = 'lxvoip'; $post_fields['password'] = '88888888'; //安全提问 $post_fields['questionid'] = 0; $post_fields['answer'] = ''; //@todo验证码 $post_fields['seccodeverify'] = ''; //获取表单FORMHASH $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $contents = curl_exec($ch); curl_close($ch); preg_match('/<input\s*type="hidden"\s*name="formhash"\s*value="(.*?)"\s*\/>/i', $contents, $matches); if(!empty($matches)) { $formhash = $matches[1]; } else { die('Not found the forumhash.'); } //POST数据,获取COOKIE $cookie_file = dirname(__FILE__) . '/cookie.txt'; //$cookie_file = tempnam('/tmp'); $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_exec($ch); curl_close($ch); //带着上面得到的COOKIE获取需要登录后才能查看的页面内容 $ch = curl_init($get_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $contents = curl_exec($ch); curl_close($ch); var_dump($contents);
Das obige ist der detaillierte Inhalt vonPHP Curl implementiert Offsite-Sammlung (empfohlen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!