PHP 写一个函数,获取一篇文章内容中的全部图片,并下载

答案

  1. function downImagesFromTargetUrl($url, $target_dir = null)
  2. {
  3. if(!filter_var($url, FILTER_VALIDATE_URL)){
  4. return false;
  5. }
  6. if(!$target_dir) {
  7. $target_dir = './download';
  8. }
  9. $root_url = pathinfo($url);
  10. $html = file_get_contents($url); //主要
  11. preg_match_all('/<img[^>]*src="([^"]*)"[^>]*>/i',$html, $matchs); //主要
  12. $images = $matchs[1];
  13. foreach ($images as $img) {
  14. $img_url = parse_url($img);
  15. if(! array_key_exists('host', $img_url)) {
  16. $img_url = $root_url['dirname'] . DIRECTORY_SEPARATOR . $img;
  17. } else {
  18. $img_url = $img;
  19. }
  20. $img_path = array_key_exists('path', $img_url) ? $img_url['path'] : $img;
  21. $save = $target_dir . DIRECTORY_SEPARATOR . $img_path;
  22. $save_path = pathinfo($save);
  23. if(!is_dir($save_path['dirname'])) {
  24. mkdir($save_path['dirname'], 0777, true);
  25. }
  26. file_put_contents($save,file_get_contents($img_url)); //主要
  27. }
  28. }