验证url是否为图片地址,判断

本文介绍如何使用PHP从远程网址抓取图片并保存到本地文件夹的方法,包括图片合法性验证、二进制数据获取及文件写入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
$url = 'http://img0.bdstatic.com/img/image/239d4628535e5dde711b5271485a5efce1b9c1661cf.jpg';
$result = getimgsize($size);
var_dump($result);



如果是图片地址的话,会返回一个是数组,包含图片类型字段mime,反之会返回false.

抓取远程图片,

//验证Url是否合法,防止file_get_contens($url)报warning错误。
if (check_url($url)) {
    $bin = file_get_contents($url);//获取到图片的二进制数据

    $fp = fopen('xxx.jpg', 'w');

    fwrite($fp, $bin);//数据保存到xxx.jpg中。

    fclose($fp);
}
function check_url($url) {
      $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_NOBODY, true);
        $result = curl_exec($curl);
        $found = false;
        // 如果请求没有发送失败
        if ($result !== false) {
            // 再检查http响应码是否为200
            $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
            if ($statusCode == 200) {
                $found = true;
            }
        }
        curl_close($curl);
        return $found;
}



转载于:https://my.oschina.net/u/948242/blog/183911

### 如何正确生成或处理图片的HTTP URL地址 #### 图片URL的基本验证与规范化 为了确保图片URL的有效性和可用性,通常需要对其进行基本验证和规范化。例如,在某些情况下,可能需要判断给定的字符串是否为有效的图片URL,并确认其协议类型。以下是一段常见的逻辑实现: ```java try { URL url = new URL("https://upload.wikimedia.org/wikipedia/en/8/87/Example.JPG"); } catch (MalformedURLException e) { System.out.println("Invalid URL format."); } ``` 上述代码片段展示了如何尝试创建一个`URL`对象并捕获潜在异常[^1]。 对于更复杂的场景,可以使用正则表达式或其他方法进一步校验输入字符串是否符合预期格式。例如,可以通过检查前缀来区分相对路径、绝对路径以及自定义图标链接: ```javascript function validateAndNormalizeImageUrl(sImageUrl) { if ( sImageUrl.startsWith("/") || sImageUrl.startsWith("sap-icon://") || sImageUrl.startsWith("http://") || sImageUrl.startsWith("https://") ) { return sImageUrl; } return null; // 或者抛出错误提示不合法 } console.log(validateAndNormalizeImageUrl("/example.jpg")); // 输出 "/" console.log(validateAndNormalizeImageUrl("sap-icon://icon-name")); // 输出 "sap-icon://icon-name" ``` 此函数实现了基于特定规则的初步筛选功能[^2]。 #### 防止重复生成短URL 当涉及大量数据存储时,为了避免不必要的资源消耗,应考虑引入缓存机制或者数据库查询操作以检测目标长URL是否已经存在对应的短形式映射关系。具体做法如下所示: ```sql SELECT short_url FROM url_mapping WHERE long_url = 'given_long_url'; IF NOT EXISTS THEN INSERT INTO url_mapping(long_url, short_url) VALUES('given_long_url', generateShortUrl()); END IF; ``` 这里假设有一个名为`url_mapping`的数据表用来保存每一对关联记录;而实际应用中的`generateShortUrl()`部分可以根据业务需求灵活调整算法设计思路[^3]。 #### 将网页转换为图像文件 除了单纯管理静态媒体资产外,有时还需要动态捕捉实时更新的内容作为视觉素材保留下来。此时可借助现代自动化工具完成此类任务——比如利用无头模式运行完整的Web渲染引擎实例模拟真实用户的浏览行为过程从而抓取最终呈现效果截图保存至本地磁盘位置供后续调用展示之需[^4]。 以下是采用Node.js环境配合第三方库执行简单示例的操作指南: 安装依赖项: ```bash npm install puppeteer ``` 编写脚本代码: ```javascript const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://example.com'); await page.screenshot({path: 'example.png'}); await browser.close(); })(); ``` 以上程序能够访问指定站点并将整个视口范围内的画面导出成PNG格式文件储存起来以便离线查看分析用途。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值