使用 PHP 获取 DOM 元素

2024-01-27

我正在努力理解如何在 PHP 中使用 DOMElement 对象。我找到了这段代码,但我不确定它是否适用于我:

$dom = new DOMDocument();
$dom->loadHTML("index.php");

$div = $dom->getElementsByTagName('div');
foreach ($div->attributes as $attr) {
     $name = $attr->nodeName;
     $value = $attr->nodeValue;
     echo "Attribute '$name' :: '$value'<br />";
}

基本上我需要的是在 DOM 中搜索element具有特定的id,之后我需要提取一个非标准的attribute(即我用 JS 制作并穿上的一个),这样我就可以看到它的价值。原因是我需要其中的一件$_GET以及基于重定向的 HTML 中的一个片段。如果有人可以解释我如何使用 DOMDocument 来实现此目的,那将会很有帮助。我真的很难理解正在发生的事情以及如何正确实施它,因为我显然做得不对。

编辑(我根据评论所在的位置):

这是我的代码第 4-26 行供参考:

<div id="column_profile">
    <?php
        require_once($_SERVER["DOCUMENT_ROOT"] . "/peripheral/profile.php");            
        $searchResults = isset($_GET["s"]) ? performSearch($_GET["s"]) : "";

        $dom = new DOMDocument();
        $dom->load("index.php");

        $divs = $dom->getElementsByTagName('div');
        foreach ($divs as $div) {
            foreach ($div->attributes as $attr) {
              $name = $attr->nodeName;
              $value = $attr->nodeValue;
              echo "Attribute '$name' :: '$value'<br />";
            }
        }
        $div = $dom->getElementById('currentLocation');
        $attr = $div->getAttribute('srckey');   
        echo "<h1>{$attr}</a>";
    ?>
</div>

<div id="column_main">

这是我收到的错误消息:

Warning: DOMDocument::load() [domdocument.load]: Extra content at the end of the document in ../public_html/index.php, line: 26 in ../public_html/index.php on line 10

Fatal error: Call to a member function getAttribute() on a non-object in ../public_html/index.php on line 21

getElementsByTagName返回一个元素列表,因此首先需要循环遍历元素,然后遍历它们的属性。

$divs = $dom->getElementsByTagName('div');
foreach ($divs as $div) {
    foreach ($div->attributes as $attr) {
      $name = $attr->nodeName;
      $value = $attr->nodeValue;
      echo "Attribute '$name' :: '$value'<br />";
    }
}

就您而言,您说您需要一个特定的 ID。这些应该是唯一的,所以要做到这一点,您可以使用(注意getElementById http://www.php.net/manual/en/domdocument.getelementbyid.php除非你打电话,否则可能无法工作$dom->validate() first):

$div = $dom->getElementById('divID');

然后获取你的属性:

$attr = $div->getAttribute('customAttr');

EDIT: $dom->loadHTML只是读取文件的内容,并不执行它们。index.php不会这样运行。你可能需要做类似的事情:

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

使用 PHP 获取 DOM 元素 的相关文章

  • 由javascript创建的css动画[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我试图在按下按钮时创建一个带有 css3 动画计时器的 div 继承人的代码 http jsfiddle net arcco96 y5nov
  • $_GET 作为 PHP 函数中的参数

    我有同样的问题 但是 我根据使用标头的 if 语句将用户重定向到通过函数构造的动态页面 为了使该函数正常工作 需要在标头的 GET 部分中传递参数 根据提供的答案 这是一种不好的做法 我应该用什么方式来做呢 function page ti
  • 显示地址栏时的 100vh 高度 - Chrome Mobile

    I came across this problem a few times and was wondering if there was a solution to this problem My problem occurs on th
  • str_getcsv 未正确解析数据

    我对 PHP 的 str getcsv 函数有疑问 我有这个代码
  • CSS悬停边框而不调整图像大小

    我想问一下 在不调整图像大小的情况下 我的悬停边框下方功能做错了什么 我已按照给出的指南进行操作here https css tricks com image rollover borders that do not change layo
  • ZF2:如何将参数传递给转发插件,然后我可以在转发它们的方法中获取这些参数?

    我有一个 Action 方法Foo需要参数的控制器 public function fooAction one two a one b two 我需要从某些方法的其他方法转发到该方法Boo控制器 这些参数之一必须是引用参数 唯一的例子就是手
  • 将 PHP 错误存储在日志文件中

    我想将 php 生成的任何错误和警告存储在日志文件中 但是still也以正常方式显示它们 回显 Thanks 您可以定义自己的函数并描述如何处理错误 http www php net manual en function set error
  • Nginx 与 phpmyadmin 登录后重定向错误

    我正在使用 nginx 设置 phpMyAdmin 我可以访问 phpMyAdminhttp localhost phpmyadmin http localhost phpmyadmin 但是 当我登录时 URL 被重定向到http loc
  • URL 重写 OpenCart 产品 SEO

    我想重写我的 opencart 网上商店的产品网址 Opencart 本身有一个 seo 实现 这真的很糟糕 我已经更新了 seo 实现 以便能够对多个类别使用相同的关键字 请参阅 Opencart 重复 URL 关键字 https sta
  • Drupal:*.api.php 中的 hook_ 函数是否被调用过?

    在 Drupal 7 中 每个核心模块都有一个 api php文件 其中 是模块的名称 例如 modules node node api php modules path path api php 这些文件有什么用 它们包含以以下开头的函数
  • PHP 性能有多好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这是我最近看到的一篇文章的后续内容 该文章表明 PHP 性能很差 PHP 始终是瓶颈 我的服务器群 让我向您展示 PHP 整体性能 http t
  • 如何在服务器(无 GUI)上呈现网页以进行打印?

    我正在尝试使用 PHP 脚本将页面实用地打印到办公室打印机 这是我到目前为止所得到的 我在服务器上安装了一台打印机 我可以通过命令行的打印命令使用 PHP 向其发送作业 我还可以使用 PHP 脚本编写纯文本文件 然后将它们添加到打印提示中
  • Codeigniter:用户会话不断过期

    我正在使用 CodeIgniter 但在会话方面遇到了一个小问题 我已将 config php 中的 sess expiration 设置为 0 以便用户会话永远不会过期 但用户 甚至我自己 仍然偶尔会被踢出并要求再次登录 顺便说一句 我将
  • PHP:分离业务逻辑和表示逻辑,值得吗? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么要在 PHP 中使用模板系统 https stackoverflow com questions 436014 why should i use templating system in php
  • PHP PDO:将数据作为对象获取 - 在调用 __construct 之前分配的属性。它是否正确?

    完整的问题应该是 这是正确的还是我不能指望的错误 为什么这是正确的行为 我一直在更多地使用 PDO 特别是直接将数据提取到对象中 在这样做的过程中我发现了这一点 如果我直接将数据获取到像这样的对象中 STH DBH gt prepare S
  • WooCommerce 添加到购物车后停止重定向

    我希望在用户单击 添加到购物车 按钮后完全删除任何重定向 实际上我没有使用产品页面 我使用一个带有产品链接的简单按钮 如下所示 add to cart 492 我的用户将单击我页面上的多个 添加到购物车 按钮 因此在单击第一个按钮后他无法重
  • PHP cURL 代理带标头?

    我正在制作一个 PHP 图像代理脚本 我需要它不仅能够回显其请求的图像的内容 而且还能够以相同的方式重现图像请求的标头 我见过一个 另一个 但没有同时看到过 这些 cURL 选项让我感到困惑 我该怎么做 抱歉 我不确定你想要什么 这是从图像
  • AngularJS:ng-占位符不起作用

    我有以下输入 html 元素 我想根据用户模型中保存的内容更改占位符
  • Rails 2 Mailer View 将 3D 添加到字符串之前

    我有一个非常旧的 Rails 应用程序 它试图为新用户发送验证电子邮件 但永远找不到令牌 因为由于某种原因 无论我如何生成链接 链接都会以 3D 形式添加到字符串前面 由于某种原因 它似乎还在标记的中间注入了一个 符号 这是一些带有输出的代
  • 手动检查 php 中的 jpeg 文件结尾标记 ffd9 (?) 以捕获截断错误

    基本上是尝试从集合中删除损坏的 过早结束的 jpeg 文件 我认为如果文件末尾标记不存在 则意味着图像被截断 因此我认为它对我的目的无效 这是检查声音的方法吗 如果是的话 我有什么想法可以在 php 中实现这个吗 cheers 尝试这个 j

随机推荐

  • 在 iOS 上缩小图像最节省内存的方法是什么?

    在后台线程中 我的应用程序需要从磁盘读取图像 将其缩小到屏幕大小 1024x768 或 2048x1536 并将其保存回磁盘 原始图像大部分来自相机胶卷 但其中一些可能具有更大的尺寸 例如 3000x3000 随后 在不同的线程中 这些图像
  • PassportJs 身份验证无限循环和执行(默认)查询

    我正在尝试使用 PassportJs 和 Sequelize 构建身份验证系统 我自己制作了注册系统 使用Sequelize 我只想使用 PassportJS 进行登录 它不会将我重定向到 failureRedirect 路由 也不会重定向
  • 从服务器动态添加数据以自动完成 Textview

    我想在我的android应用程序中实现google类型搜索 为此我使用了自动完成文本视图 当我一个接一个地输入字符时它非常有效 但是当我同时输入多个字符时会出现问题 我的应用程序显示一个对话框并强制关闭 提前致谢 public class
  • 位置 0 出现意外标记文件结束

    RequestMapping value sensorlog method RequestMethod POST public ResponseBody String sensorlog HttpServletRequest request
  • 如何创建一个大小有限的VecDeque?

    我想实施一个VecDeque有最大尺寸限制 我有两个策略 但我都无法完成 第一种方法 通过组合继承 我创建了一个新结构 pub struct LimVecDeque
  • 通过 TCP 发送和接收 XML 数据

    我一直在尝试弄清楚如何通过 TCP 服务器发送和接收 XML 数据 我有java编程背景 所以我在这里有点超出我的深度 如果我只发送纯文本 我的程序就可以工作 但是一旦我尝试发送 xml 数据 它就会挂起 服务器永远不会收到消息 我一直在寻
  • 如何使我的请求在后台运行,同时填充其他 EditText(线程)?

    我是线程新手 但我有一个 EditText 视图 每当失去焦点时 它都会使用用户从 EditText 的输入填充带有图像徽标的 RecyclerView 但是 每当用户失去焦点并且调用该方法时 一切都会停止一段时间 这意味着我不擅长线程 我
  • 将 stdout 和 stderr 重定向到文件和控制台

    在 powershell 脚本中 我调用一个程序并想要重定向stdout and stderr to 不同的文件 同时仍然在控制台中显示两者的输出 所以基本上 我想要 stdout gt stdout stdout gt out log s
  • 无法在 Eclipse + EPIC 中查看本地文件

    我刚刚安装了 Eclipse 3 7 的 Perl EPIC 插件 调试器本身工作正常 我可以单步执行我的代码 但是我看不到任何变量 Eclipse 在错误日志中报告此错误 解析调试器变量时发生错误 的内容 变量视图可能不准确 字符串导致的
  • 录制的声音文件(ala google now,google keep)-RecognizerIntent/Listener

    我一直在开发一个使用 recognizerIntent 来获取语音输入的应用程序 然而 自从 jelly bean 推出以来 我一直无法从我的语音输入中获取实际的声音文件 在识别监听器中 http developer android com
  • 您不能对同一个动态路径 Nextjs 使用不同的 slug 名称

    我在我的项目中使用基于文件夹结构的 nextjs 默认动态路由技术 我有一条路线是 pages language location location id 现在我遇到一个用例 除了最后一个参数之外 我需要与上面的路由完全相同 locatio
  • C#:从正文和文件中将模型发布为 MultipartFormDataContent

    我正在寻找一种在一个请求中发送模型和图像的方法 我尝试从正文发送我的模型 但我不知道如何发送文件 除了在不同的文件中发送图像和模型之外 还有其他方法吗 这是我的 API 中的 POST 方法 HttpPost Route UploadNew
  • 如何使用 Python 从 Firebase 存储中检索图像?

    我已经将图像存储到 Firebase Storage 我需要使用 Python 代码将其取出 我可以使用任何 URL 检索图像吗 或者有什么办法可以找回来吗 以下是我如何将其存储在 Firebase Storage 中的图像 这就是我用的
  • 使用 Vaadin 从菜单栏打开 pdf 文件

    我的 vaadin 应用程序中有一个菜单栏 并且想要添加一个项目来打开 pdf 文件 这是浏览器的新选项卡 我找到了一些使用按钮打开文件的解决方案 但我必须使用 MenuItem MenuBar Command commandHandler
  • 如何从 ASP.NET 5 MVC 6 控制器操作返回 XML

    如何从控制器操作返回 XML 即使我添加标题Accept application xml它返回一个 JSON 对象 MVC 5 中的 WebApi 控制器支持这一点 我需要做什么才能使其在 MVC 6 中工作 Microsoft 删除了 X
  • 在 iPad 中重新定向期间在视图中定位对象

    iPad 专家 苹果希望我们支持所有方向 我认为这意味着特定的布局应该旋转 以便所有对象的位置相对相同 或者 如果看起来不太好 那么它们应该重新定位 或者应该设计和构建两个视图 如果我依赖内置的旋转机制 对象要么会调整大小 要么以一个方向或
  • 如何在 extjs 网格(单元格编辑)中显示完整列可编辑?

    我正在使用单元格编辑插件来编辑单元格 但这就像当我们单击该列时 它将进入编辑模式 我想显示带有可编辑文本框的完整列 目前我正在使用以下代码使其可编辑 selType cellmodel plugins Ext create Ext grid
  • Gradle 禁用所有增量编译和并行构建

    在一小部分 sbt 项目中 我们需要 protobuf grpc 编译 并且因为只有 Gradle 对此有正常支持 所以我们用它来执行 protobuf 相关任务 有时它会随机失败编译相同的东西 但重试时会成功 我们确定这是因为增量 Jav
  • Firestore:多个条件 where 子句

    例如 我的图书列表有动态过滤器 我可以在其中设置特定的颜色 作者和类别 该过滤器可以一次设置多种颜色和多个类别 Book gt Red Blue gt Adventure Detective 如何有条件地添加 where firebase
  • 使用 PHP 获取 DOM 元素

    我正在努力理解如何在 PHP 中使用 DOMElement 对象 我找到了这段代码 但我不确定它是否适用于我 dom new DOMDocument dom gt loadHTML index php div dom gt getEleme