使用 PHP 抓取完整图像 src

2023-12-12

我正在尝试用 php 抓取 img src,我可以很好地获取 src,但是如果 src 不包含完整路径,那么我无法真正重用它。有没有办法使用php获取图像的完整路径(如果使用右键菜单,浏览器可以获取它)。

IE。如何获取包含以下两个示例之一中的域的完整路径?

src="../foo/logo.png"
src="/images/logo.png"

Thanks,

Allan


您不需要正则表达式...只需要一些耐心。我真的不想为你编写代码,只是检查 src 是否以以下开头http://,如果没有,则有 3 种不同的情况。

  1. 如果它以/然后前置http://domain.com
  2. 如果它开始于..你必须split完整的 URL 和砍下碎片直到 src 以 a 开头/
  3. 否则(以字母开头),采用完整的域,并且将其剥离到最后一个斜杠然后附加 src URL。

或者......偷懒并窃取这个脚本

$url = "http://www.goat.com/money/dave.html";
$rel = "../images/cheese.jpg";

$com = InternetCombineURL($url,$rel);

//  Returns http://www.goat.com/images/cheese.jpg

function InternetCombineUrl($absolute, $relative) {
    $p = parse_url($relative);
    if($p["scheme"])return $relative;
    
    extract(parse_url($absolute));
    
    $path = dirname($path); 

    if($relative{0} == '/') {
        $cparts = array_filter(explode("/", $relative));
    }
    else {
        $aparts = array_filter(explode("/", $path));
        $rparts = array_filter(explode("/", $relative));
        $cparts = array_merge($aparts, $rparts);
        foreach($cparts as $i => $part) {
            if($part == '.') {
                $cparts[$i] = null;
            }
            if($part == '..') {
                $cparts[$i - 1] = null;
                $cparts[$i] = null;
            }
        }
        $cparts = array_filter($cparts);
    }
    $path = implode("/", $cparts);
    $url = "";
    if($scheme) {
        $url = "$scheme://";
    }
    if($user) {
        $url .= "$user";
        if($pass) {
            $url .= ":$pass";
        }
        $url .= "@";
    }
    if($host) {
        $url .= "$host/";
    }
    $url .= $path;
    return $url;
}

From http://www.web-max.ca/PHP/misc_24.php

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP 抓取完整图像 src 的相关文章

  • PHP使用c++扩展会更快吗?

    我现在正在构建一个推荐系统 一个网站 我想使用PHP作为脚本语言 推荐系统可能会进行复杂的矩阵计算或其他操作 考虑到性能 我想用C 来做矩阵计算或者其他复杂的计算 所以我需要PHP调用C 函数 获取结果并进行其他处理 我知道我可以使用 PH
  • PHP的spl_autoload_register如何解决与require_once的循环依赖?

    PHP的spl autoload register如何解决与require once的循环依赖 循环依赖可以解决某些情况 但不是全部 让我们从一个失败的例子开始 假设我们在不同的文件中定义了三个类 cat php class Cat ext
  • PHP中如何有效防止跨站请求伪造(CSRF)

    我正在努力阻止CSRF https www owasp org index php Cross Site Request Forgery CSRF in php questions tagged php通过以下方式 A SESSION to
  • 获取资源 #id 3 错误

    当我运行此命令时 得到资源 id 3 结果 请查看我的代码并帮助我解决这个问题 拜托
  • 如何编写一个 SQL 查询来计算每月和每年的行数?

    有谁知道如何查询 vbulletin 数据库来生成每月 每年注册数量的报告 以获得如下结果 MM YYYY Count 01 2001 10 02 2001 12 感谢下面的这些答案 我的最终版本有效如下 SELECT COUNT as R
  • 在php中设置数据库中的会话

    如何使用 php 和 mysql 在数据库表中使用会话 您需要创建一个像这样的对象 class SessionHandler private static lifetime 0 private function construct obje
  • 将加载 gif 添加到简单脚本中

    我对 Javascript 真的很陌生 但我已经有了这个加载 url 内容的脚本 一切都工作正常 我使用按钮上的 onClick 方法调用 plannerSpin 函数 但是当这一切发生时 我将如何显示动画 gif var xmlHttp
  • 连接数据库错误类型:2002:权限被拒绝

    我正在尝试使用以下脚本连接数据库 cxn test php
  • 使用 str_replace 使其仅作用于第一个匹配项?

    我想要一个版本str replace 仅替换第一次出现的 search in the subject 有没有一个简单的解决方案 或者我需要一个 hacky 解决方案 虽然没有它的版本 但解决方案一点也不黑 pos strpos haysta
  • 包含 WordPress 之外的 WordPress 内容

    我正在寻找构建 WordPress 网站的移动版本 并将其大部分内置于静态文件中 但我试图从运行移动网站的外部 PHP 文件内部访问 WordPress 内容 如何在不手动编写 SQL 查询的情况下访问循环或数据库 Edit 为了澄清一下
  • 在非 WordPress php 页面之外显示 WordPress 帖子

    我需要在非 WordPress php 页面中显示 WordPress 博客文章 我已经尝试过以下代码
  • Android Studio 使用的默认 Android SDK 路径是什么?

    使用Android Studio下载Android SDK时 默认下载路径是什么 我有兴趣了解 Linux Mac 和 Windows 的路径 在网上搜索了一下 好像是这样的 Linux Android Sdk Mac Library An
  • S3 上上传文件的 MIME 类型

    如何更改 Amazon S3 上上传文件的 MIME 类型 我尝试过http docs amazonwebservices com AWSSDKforPHP latest m Amazon S3 更改内容类型 http docs amazo
  • Preg在html标签之间匹配php中的文本

    您好 我想在 PHP 中使用 preg match 从 html 文档中解析出以下内容中的 所需文本 p class review Desired text p 通常我会使用 simple html dom 来做这样的事情 但在这种情况下它
  • Laravel - 重复键批量插入更新大数据集

    我有大约 80k 条记录 每天需要多次运行插入 更新脚本 INSERT INTO my rankings id rank VALUES 1 100 2 99 3 102 80000 3 ON DUPLICATE KEY UPDATE ran
  • 为简单应用程序生成 PHAR

    我正在尝试使用 Symfony2 控制台库构建 CLI 工具 我已经有了一些基本的工作 现在我想将其打包为一个 Phar 我读过一些示例 但我看到的示例非常简单 3 个文件 没有命名空间等 In my src 目录我有以下内容 Above
  • 如何确定网站的语言

    我有一个网站的网址 需要找出该网站使用哪种语言 无论是西班牙语 法语 意大利语等 该网站的顶级域名是 com 这根本没有帮助 我无法简单地检查字符串是否包含 de fr 或任何其他国家 地区代码 我试图得到lang的属性html标签 但有很
  • Yii:使用与控制器布局不同的布局渲染动作

    在 Yii 中 有没有办法使用不同的方式渲染单个动作layout比为控制器定义的值 我有一个操作希望其格式与其他操作不同 并且文档中不清楚这是否可能 我相信您可以调用该操作 layout多变的 public function actionY
  • 使用 PHP MySql 进行关键字搜索?

    我的 mysql 表中有标题 varchar 描述 text 关键字 varchar 字段 我保留了关键字字段 因为我认为我只会在这个字段中搜索 但我现在需要在所有三个字段中进行搜索 所以对于关键字 word1 word2 word3 我的
  • Laravel 中间件将变量返回给控制器

    我正在对用户进行权限检查 以确定他们是否可以查看页面 这涉及首先通过一些中间件传递请求 我遇到的问题是 在将数据返回到视图本身之前 我在中间件和控制器中复制相同的数据库查询 这是设置的示例 路线 php Route get pages id

随机推荐

  • 如何将R中积分的结果分配给数值变量?

    R 示例 k 6 f lt function s s k 1 exp s integrate f 0 Inf 积分的输出是字符串 120 with absolute error lt 7 3e 05 我想将字符串中的第一个值 120 积分
  • 数据框为一列选择最大值,但输出另一列的值

    我有一个数据框 其值类似于下面 A10d B10d C10d A B C Strategy 20 10 5 3 5 1 3 该策略选择 A10d B10d C10d 中的最大值并返回 A B C 的值 在这种情况下 A10d 是最大的 策略
  • Susy grid - 有什么(简单?)方法可以使“列”具有相同的高度?

    让我的脚接触 Susy sass haml 等 使用调整后的中间人 来自主分支的最新 susy 在 grid css scss 中有这个 import susy total columns 8 column width 4em gutter
  • Perl 主机到 IP 解析

    我想将主机名解析为 IP 地址 使用以下 Socket 就可以了 ip gethostbyname host or die Can t resolve ip for host n ip inet ntoa inet aton host 这工
  • Gradle 相关任务不会将命令行选项传递给父任务

    我正在编写一个自定义 Gradle 任务 它接受来自命令行的选项 该部分按预期工作 导致我出现问题的是 调用依赖任务时 命令行选项被拒绝 因为它与依赖任务无关 这是演示该问题的示例 class CustomTask extends Defa
  • 将图标添加到自定义 WooCommerce 支付网关

    我想向我的支付网关添加自定义图标 我已阅读 WOO 网关 API 但获得的帮助为零 这是我下面的代码 请帮助我找到一种包含该图标的实用方法 以便我的前端有一个图标 谢谢
  • 在 Struts 2 中动态生成电子邮件模板

    场景是用户请假 当他请求休假时 系统会向审批者和用户发送一封电子邮件 其中包含有关休假的详细信息 我被困在这一点上 如何创建一个模板 该模板将根据请求休假的用户的名称自动更新 我看到了 asp net 应用程序 它是通过使用类似的东西在模板
  • 为什么Java中没有SortedList?

    在Java中有SortedSet and SortedMap接口 两者都属于Java集合框架并提供访问元素的排序方式 然而 据我了解 没有SortedList在爪哇 您可以使用java util Collections sort 对列表进行
  • 静态解析符号值时遇到错误。不支持函数调用。考虑替换函数或 lambda?

    尝试启动 npm 时出现错误 Error encountered resolving symbol values statically Function calls are not supported Consider replacing
  • 从进程获取实时输出

    我的项目有问题 我想启动一个进程 7z exe 控制台版本 我尝试了三种不同的方法 Process StandardOutput ReadToEnd 已接收输出数据 开始输出读取行 流写入器 什么都不起作用 它总是 等待 过程结束以显示我想
  • Ruby:无法在 Windows 上安装 Watir Gem

    瓦提尔的网站说我需要 Ruby 1 8 6 我正在运行它 Windows 安装应该像这样简单gem install watir 但是当我运行它时 我得到了这个 C Users Ryguy Code gt gem install watir
  • 在循环 R 中迭代时从函数返回值

    我已经远离了 R 中的函数 但认为这是更好的做法 现在我有这个问题 我写我的函数 myFunction lt function tab takes tabular input inP lt c for x in 1 dim tab 1 it
  • 增强 PowerShell 脚本以查询 AsBuiltReport 框架内 GPO 上的端口

    我得到了当前的脚本 来自这个答案 我想改进 如果在入站方向内启用并允许这些端口 则脚本应检索所需的端口 操作 启用 方向的过滤器工作完美 但我仍然需要本地端口的过滤器仅检索定义端口内的唯一结果 但仍显示其他端口 附加问题 如何将机器的 IP
  • 长按监听器 ListActivity 类

    我有一个使用 ListView 的应用程序 我设置了 onListItemClick 事件来查看有关联系人的详细信息 我想实现 onLongListItemClick 来显示一个对话框 但我不知道为什么它不起作用 我的意思是什么也没有发生
  • Visual Studio Code c++11 扩展警告

    我正在学习 C 并且正在使用 Mac 版 Visual Studio Code 我使用 Code Runner 来运行我的程序 我的问题是 当我使用 c 11 中的某些内容 如 auto 进行变量声明时 Visual Studio Code
  • 如何自定义UITabBarController的“更多”按钮?

    我将 UITabBarController 添加为 RootView 并且我还知道当您有超过 5 个 tabBarItem 时 会自动添加 更多 按钮 所以一切都很完美 但我有两个问题 1 如何在 更多 TabBarItem上设置图像 2
  • Mapbox GL JS 在图层中的特定功能上设置 Paint 属性

    我使用 Mapbox Studio 作为地图和样式的基础 然后使用 HTML 来实现其他地图功能 其中一项功能是在悬停或鼠标输入时更改图标不透明度 当您直接在 HTML 中创建它时 我检查了其他示例和所有其他参考功能 我设法改变不透明度 但
  • 队列不自然排序[重复]

    这个问题在这里已经有答案了 可能的重复 为什么java中的PriorityQueue会出现这种奇怪的顺序 请参阅下面的代码 public static void main String args Queue
  • 使用 MIPS 汇编中的逻辑移位乘以 2 的幂

    有人可以指导我如何在 MIPS 汇编中使用移位来制作乘法代码吗 我不明白数字 2 n 如何帮助我使用奇数被乘数进行乘法 我目前有这段代码 我正在尝试制作一个计算器 text li v0 4 la a0 ask 1 syscall li v0
  • 使用 PHP 抓取完整图像 src

    我正在尝试用 php 抓取 img src 我可以很好地获取 src 但是如果 src 不包含完整路径 那么我无法真正重用它 有没有办法使用php获取图像的完整路径 如果使用右键菜单 浏览器可以获取它 IE 如何获取包含以下两个示例之一中的