使用 PHP 函数自动向 标签添加宽度和高度属性

2024-02-09

我想要的是一个可以根据用户输入运行的函数,该函数将智能地查找并添加width and height任何属性<img>HTML blob 中的标记,以避免图像加载时的页面重排问题。

我正在为 PHP 论坛编写发布脚本,其中用户的输入在写入数据库以供以后显示之前经过清理并且通常变得更好。作为我如何让事情变得更好的一个例子,我有一个脚本插入alt属性到图像中,如下所示:

Here are two images: <img src="http://example.com/image.png"> <img src="http://example.com/image2.png">

经过发布脚本的清理后,变成

Here are two images: <img src="http://example.com/image.png" alt="Posted image"> <img src="http://example.com/image2.png" alt="Posted image">

(这使得它在严格的 HTML 4 下验证,但可能不符合 alt 属性的精神 — 唉!)

因此,对于我的功能,我有一个模糊的想法,服务器需要运行getimagesize()在 HTML 块中找到的每个外部图像上,然后将函数生成的属性应用于每个外部图像<img>它遇到的标签。我假设这个函数以前已经写过,但我在 Google 或 php.net 文档上没有运气。我是否必须从头开始,或者有人知道我可以使用或适应完成这项工作的(相对)强大的功能吗?


你说得对getimagesize()。你可以简单地做这样的事情:

$img = 'image2.png';
$info = getimagesize($img);
printf('<img src="%s" %s>', $img, $info[3]);

如果图像托管在远程位置,则您必须下载所有图像(该函数会处理它),因此您可能需要缓存结果以加快后续请求的速度。

Edit:刚刚看到你有一个包含各种的字符串<img>元素。这应该可以解决问题:

<?php
$html = <<<EOF
something <img src="https://www.google.com/images/logos/ssl_logo_lg.gif"> hello <img src="https://mail.google.com/mail/images/2/5/logo1.png">
EOF;

$dom = new DOMDocument();
$dom->loadHTML($html);

foreach ($dom->getElementsByTagName('img') as $img) {
    list($width, $height) = getimagesize($img->getAttribute('src'));
    $img->setAttribute('width', $width);
    $img->setAttribute('height', $height);
}

$xpath = new DOMXpath($dom);
$newDom = new DOMDocument();
foreach ($xpath->query('//body/p')->item(0)->childNodes as $node) {
    $newDom->appendChild($newDom->importNode($node, true));
}

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

使用 PHP 函数自动向 标签添加宽度和高度属性 的相关文章

  • 从 HTML 字符串中解析和选择

    使用 ajax 调用 我返回了页面的partialView HTML 但在显示它之前 我希望从主 div 中提取信息 如果我创建一个浮动窗口 该数据只是大小信息 Code div class window details more data
  • Bootstrap

    我正在尝试使用 Bootstrap 构建一个网站 到目前为止 一切都按计划进行 我想要一个固定的导航栏 并且我正在使用内置函数 div class navbar navbar fixed top 这很棒 正是我所需要的 但我希望导航和标题从
  • BeautifulSoup4:选择属性不等于x的元素

    我想做这样的事情 soup find all td attrs class foo 我想找到所有不具有 foo 类的 td 显然上面的方法不起作用 那怎么办呢 BeautifulSoup确实使 汤 变得美丽且易于使用 You 可以传递一个函
  • WordPress 子主题 -functions.php 复制 - 无法“重新声明”

    我正在使用带有儿童主题 starkers child 的 Starkers 我需要编辑functions php来声明一个菜单 所以我复制了functions php JS文件夹和external文件夹 它们都在functions文件中的某
  • 计算帖子中使用 WordPress 短代码的次数

    我有以下 WordPress 短代码功能 function wp shortcode static i 1 return i i return return add shortcode shortcode wp shortcode 这很好用
  • 如何从文件中获取整个函数

    好的 我现在正在逐行阅读一个文件 我知道文件中的每个函数名称 因为它是在 XML 文档中的其他位置定义的 应该是这样的 function function name 其中 function name 是函数的名称 我从 XML 文档中获取所
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • 重用 PDO 语句 var 会使进程崩溃

    我重用一个变量来存储两个不同的 PDO mysql 语句 stmt dbh gt prepare SELECT stmt gt execute stmt dbh gt prepare UPDATE crash here Error in o
  • Symfony 4 生产模式错误处理页面内存耗尽

    我将我的项目设置为prod模式在 env除了自定义错误页面之外的所有内容似乎都有效 我将此作为我的 404 树枝模板 templates bundles TwigBundle Exception error404 html twig inc
  • 类 Doctrine\Common\Collections\ArrayCollection 不是有效的实体或映射的超类

    我有三个实体 特征值 php
  • Bootstrap 4 Beta 0 网格系统上的 Rowspan

    您好 我正在开发一个使用 Bootstrap 4 Beta 的电子商务模板 我让它在移动设备上工作 但在桌面设备上我不知道如何让购买按钮保持在标题下 在我的方法中 它出现在 图库 部分下 Desired Desktop Desired Mo
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • Yii2 组件将数据传递给 __construct

    我有一个库 我想将其用作组件 在配置文件中我这样设置 components gt superLib gt class gt SuperLib construct gt first second Maybe Yii 2 have proper
  • 如何在html中定义条件换行符?

    我希望这根绳子断在 如果需要的话 没有地方可以写了 7 380 Ft 159 Ft term kd jjal like 7 380 000 Ft 159 125 Ft term kd jjal 如何在html中实现这一点 nbsp 产生 错
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 为什么这些内联块元素会产生额外的宽度?

    这是这个问题的后续内容 仅使用 css 自动调整图像下的文本 https stackoverflow com questions 34185547 autofit text under image with only css 为什么这段代码
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求
  • 无法将句子插入数据库

    我有一些句子 我必须选择由 6 个以上单词组成的句子 然后它们将被插入到数据库中

随机推荐

  • Angular 1.5 组件绑定:检查回调是否存在

    我有一个简单的contactList组件 有 2 个绑定 contacts and onRemove contacts只是要显示的联系人数组 onRemove是一个回调函数 app component contactList templat
  • python:如何在需要时启动和停止记录器

    我正在尝试在 Django 应用程序的代码中记录 sql 语句 目前我在 settings py 中使用以下记录器配置 LOGGING version 1 disable existing loggers False formatters
  • ASP.NET 工作线程可以同时处理多个请求吗?

    我知道 ASP NET 将在池中的单个线程上执行请求 反之亦然吗 单个 ASP NET 请求是否会独占一个工作线程直到请求完成 或者 ASP NET 是否会在多个并发请求之间重复使用同一线程 即使你的第一个陈述也不完全正确 ASP NET可
  • 在列表中搜索元素并将其替换为多个项目

    搜索给定列表的Python方式是什么 a b c 对于元素b替换它并插入多个项目b1 b2 b3这样列表最终读作 a b1 b2 b3 c 使用切片表示法 gt gt gt lst a b c gt gt gt i lst index b
  • 在绘图旁边显示(离散)颜色条作为(自动选择的)线条颜色的图例

    我试图制作一个显示许多线条的图 但很难区分它们 它们有不同的颜色 但我想让它很容易显示哪条线是哪条线 普通的图例并不能很好地工作 因为我有超过 10 行 这些行遵循逻辑顺序 我想 1 从颜色图中自动选择它们的颜色 最好是具有平滑排序的颜色
  • 排除“Else”子句是否会带来性能差异?

    下面两段代码在性能上有区别吗 if myCondition return returnVal1 return returnVal2 and if myCondition return returnVal1 else return retur
  • Ruby 单元测试技术、Mocking 和 Stubbing

    我被招募为软件开发人员 我正在尝试使用 ruby 中的 RSPEC 和 RR 进行单元测试 但很难决定具体的策略 主要是因为我被分配为已经发布的代码编写单元测试 书面 考虑以下代码 它是名为 method1 的大方法的一部分 if 5234
  • 在 C# 中读取扩展图像属性

    如果可能的话 出于性能原因 我想在不打开图像的情况下找到磁盘上图像的高度 宽度 Windows 图像属性窗格包含宽度 高度 位深度等信息 这让我相信它在文件的某个位置存储元数据 我如何访问这些信息 stackoverflow上有一些关于如何
  • Google Play 显示 - 您的设备与此版本不兼容,无法下载该应用程序

    我们已经在 Play 商店上传了一个问候应用程序 它在手机上运行良好 但在平板电脑中 我收到错误 此设备与此版本不兼容 这是我的 Android 清单权限 请检查一下 如果有人纠正错误请告诉我
  • Linux内核FIELD_SIZEOF宏解释

    我正在学习 c99 在阅读了结构之后 我在Linux内核代码 http lxr free electrons com source include linux kernel h a avr32 L53 define FIELD SIZEOF
  • 如何从 PHImageManager 获取方形缩略图?

    有人知道如何从 PHImageManager 获取方形拇指吗 PHImageContentModeAspectFill 选项无效 PHImageManager defaultManager requestImageForAsset PHAs
  • 如何从多维数组(没有循环)中获取单一类型的数组[重复]

    这个问题在这里已经有答案了 我有以下数组 foo array 10 0 gt array 4 merchantId gt string 5 12e21 programId gt string 27 ddd3333 networkId gt
  • 如何将 Composer 供应商文件夹提交到 Git 存储库?

    我可以设置吗 gitignore以这种方式允许 Composer 依赖项 供应商目录 存在于我的存储库中 作曲家正式建议您 不应该 这样做 它提供了三个原因 https getcomposer org doc faqs should i c
  • 显示当天的项目

    我希望创建一个函数 从 mySQL 表中获取随机项目 但让我将返回的项目保留为 当天的项目 换句话说 昨天是 当天的项目 的项目不应再次显示 直到所有其他项目都显示为当天的项目 关于如何以优雅的方式做到这一点有什么建议吗 Thanks 添加
  • 查询 INFORMATION_SCHEMA 时出现死锁

    我有一个进程可以根据已发布的元数据层的更改动态更改 SQL2K5 表结构 例如 如果需要添加新列并且表没有依赖项 步骤将是 1 使用 T SQL 为表中已存在的任何索引和主键创建脚本 这些脚本包含在下面 2 删除表 3 从具有新列的元层重新
  • 在 Swift 3 中将可选字符串转换为双精度

    我有一个选项字符串 想将其转换为双精度 这在 Swift 2 中有效 但自从转换为 Swift 3 后 我得到的值为 0 var dLati 0 0 dLati latitude as NSString doubleValue 我进行了检查
  • firestore规则路径的大小

    我试图在 firestore 规则中使用路径的大小 但无法让任何东西发挥作用 并且在 firestore 文档中找不到有关如何执行此操作的任何参考 我想使用最后一个集合名称作为规则中的参数 所以尝试了以下方法 match test docu
  • IBM Worklight 5.0.6 - 如何向 Android 环境添加启动屏幕?

    我在尝试在 Android 中添加启动屏幕时遇到问题 下面是我使用的代码 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState su
  • T-SQL 将秒格式化为 HH:MM:SS 时间

    有没有什么棘手的方法来格式化秒 例如小时 分钟 秒 例如 3660 秒将显示为 01小时01分00秒 or 01 01 00 我知道执行此操作的标准方法 将所有秒除以 3600 即可得到小时 将剩余秒数除以 60 即可得到分钟 剩下的都是秒
  • 使用 PHP 函数自动向 标签添加宽度和高度属性

    我想要的是一个可以根据用户输入运行的函数 该函数将智能地查找并添加width and height任何属性 img HTML blob 中的标记 以避免图像加载时的页面重排问题 我正在为 PHP 论坛编写发布脚本 其中用户的输入在写入数据库