做个记录,在工作or面试中有可能会遇到
function downImagesFromTargetUrl($url, $target_dir = null) {
if(!filter_var($url, FILTER_VALIDATE_URL)){
return false;
}
if(!$target_dir) {
$target_dir = './download';
} $root_url = pathinfo($url); $html = file_get_contents($url); //主要
preg_match_all('/<img[^>]*src="([^"]*)"[^>]*>/i',$html, $matchs); //主要 $images = $matchs[1]; foreach ($images as $img) {
$img_url = parse_url($img);//获取img路径信息
if(! array_key_exists('host', $img_url)) {
$img_url = $root_url['dirname'] . DIRECTORY_SEPARATOR . $img;
} else {
$img_url = $img;
} $img_path = array_key_exists('path', $img_url) ? $img_url['path'] : $img;
$save = $target_dir . DIRECTORY_SEPARATOR . $img_path;
$save_path = pathinfo($save); if(!is_dir($save_path['dirname'])) {
mkdir($save_path['dirname'], 0777, true);
} file_put_contents($save,file_get_contents($img_url)); //主要
}
}

PHP 获取一篇文章内容中的全部图片,并下载的更多相关文章

  1. PHP获取一篇文章内容中的全部图片,并下载

  2. 一篇文章搞定百度OCR图片文字识别API

    一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104

  3. phpcms v9栏目列表调用每一篇文章内容方法1

    我们先来看下默认栏目调用的代码: 复制代码代码如下:{pc:content action="lists" catid="$catid" num="25 ...

  4. phpcms v9栏目列表调用每一篇文章内容方法

    {pc:content action="lists" catid="$catid" num="25" order="id DESC ...

  5. php获取文章内容中的全部图片数组

    <?php $pattern="/<img.*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/&q ...

  6. dedecms无法下载远程jpeg图片 织梦不能提取文章内容中的jpeg图片生成缩略图

    文件:/dede/inc/inc_archives_functions.php 代码: preg_match_all("/(src)=[\"|'| ]{0,}([^>]*\. ...

  7. js中保存成图片并下载

    1.保存canvas中绘制的内容为图片 HTML代码: <canvas id="canvas" width="400" height="400& ...

  8. PHP修改css文件中的背景图片并下载到本地

    扒网站当中一般css中的图片扒不下来,这个脚本就是用来下载这些图片到本地的 流程 1.获取css文件路径 2.打开文件逐行读取判断是否包含需要的图片 2.1 包含则 -进行截取直接获取到相对路径 2. ...

  9. 一篇文章让你学透Linux系统中的more命令

    Linux 下有很多实用工具可以让你在终端界面查看文本文件.其中一个就是 more. more 跟我之前另一篇文章里写到的工具 —— less 很相似.它们之间的主要不同点在于 more 只允许你向前 ...

随机推荐

  1. yum和rpm

    rpm简介 这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Package ...

  2. 网页布局之flex

    Flex是Flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性.设为Flex布局以后,子元素的float.clear和vertical-align属性将失效.使用flex ...

  3. blur和click事件冲突

    一.问题描述文本框的blur事件和div元素的click事件出现冲突.在input的blur事件中,我们隐藏div元素.在div的click事件中,我们清除input的内容,并隐藏自身.当我们在inp ...

  4. react和redux版本不匹配

    1.页面报错Cannot read property 'shape' of undefined 2. 原因为:react版本与react-redux版本不匹配. 1.package.json文件修改该 ...

  5. Selenium获取当前窗口句柄与切换回原窗口句柄

    Selenium通过window_handles获取当前窗口句柄,进行页面元素操作 切换回原窗口句柄,进行元素操作 代码如下:(python版) __author__ = 'liuke' import ...

  6. jmeter(二十一)jmeter常用插件介绍

    jmeter作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如LoadRunner),在功能的全面性上就稍显不足. 这篇博客 ...

  7. C++中的auto的使用

    需要改变迭代对象 for(auto &i:s) string s = "hello"; for (auto &i : s ) i = toupper(i); //改 ...

  8. (98)Wangdao.com_第三十天_拖拉事件

    拖拉事件 拖拉 drag ,是指用户在某个对象上按下鼠标键不放,拖动它到另一个位置,然后释放鼠标键,将该对象放在那里. 一旦某个元素节点的 draggable 属性设为true,就无法再用鼠标选中该节 ...

  9. laravel之数据库增删改查

  10. pytorch安装(使用pip3装到conda环境下)

    之前在windows上使用pip3的方式安装过pytorch,虽然偶尔也会HTTP Error,安装失败,但是基本还是可以安装成功的.上 这一次在ubuntu上装了anaconda,想着之后的库都用c ...