Maison  >  Article  >  développement back-end  >  Exemple de code pour php pour explorer les images et les enregistrer localement

Exemple de code pour php pour explorer les images et les enregistrer localement

不言
不言avant
2019-01-28 09:51:043941parcourir

Le contenu de cet article concerne des exemples de code pour explorer des images avec PHP et les enregistrer localement. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Revoir l'utilisation de plusieurs fonctions php à travers un exemple simple

Fonctions utilisées ou points de connaissances

  • curl envoie des requêtes réseau

  • preg_match match régulier

code

$url     = 'http://desk.zol.com.cn/bizhi/7386_91671_2.html';
$headers = [
    'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
];
$ch      = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, $headers);
$output = curl_exec($ch);
curl_close($ch);
$str = mb_convert_encoding($output, 'utf-8', 'gb2312');
//或$str = iconv('gb2312//IGNORE', 'utf-8', $output);

preg_match(&#39;!<img id="bigImg" src="(?<src>http.*\.(?<ext>jpg|png))".*>!&#39;, $str, $m);
file_put_contents(&#39;./meinv.&#39; . $m[&#39;ext&#39;], file_get_contents($m[&#39;src&#39;]));

effet

Exemple de code pour php pour explorer les images et les enregistrer localement

Explication

curl envoie une requête

Les étapes pour établir une connexion curl en php sont généralement : l'initialisation, la définition des options, l'exécution des opérations et la libération de la connexion.

$ch = curl_init();
curl_setopt($ch, CURLOPT, $opt);
$out = curl_exec($ch);
curl_close();

Paramètres CURLOPT couramment utilisés, plus de documents de référence http://php.net/manual/zh/function.curl-setopt.php

CURLOPT_URL, string //设置url必须
CURLOPT_HEADER, array //设置请求header
CURLOPT_RETURNTRANSFER, bool //为true时,以字符串返回响应,不包含header
CURLOPT_SSL_VERIFYPEER, bool //为false时,不验证https证书,用于请求https的url
CURLOPT_POST, int //为1时配合CURLOPT_POSTFIELDS使用post请求,默认使用get
CURLOPT_POSTFIELDS, array //post数据数组

Sortie directe tronquée des caractères ont été trouvés dans $output. En vérifiant le code source, nous avons constaté que la page Web utilise le codage gb2312. Utilisez mb_convert_encoding ou iconv pour la convertir en codage utf-8 pour la sortie.

preg_match Match régulier

En consultant le code source, nous avons constaté que la balise d'image dont nous avons besoin est ec895bc01a482d9ca1aae648814165ed

Expression régulière

<img id="bigImg" src="(?<src>http.*\.(?<ext>jpg|png))".*>

.* Correspond à tout, (?8a11bc632ea32a57b3e3693c7987c420) En utilisant le regroupement, vous pouvez facilement utiliser $match['name'] pour obtenir la partie souhaitée

Enfin $ match['src '] Obtenez la véritable URL de l'image et enregistrez-la via file_put_contents, même si elle est complétée


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer