热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于php:使用简单的htmldom解析器通过每个元素的两个或多个属性来查找部分

Finding part with simple html dom parser by two or more attributes per one eleme


Finding part with simple html dom parser by two or more attributes per one element


我想说,我知道,很多人认为,简单的 HTML DOM 解析器对于 HTML 解析器来说是一个非常糟糕的选择。我现在仍然需要使用它。

我阅读了一些文章,其中描述了如何通过每个元素的两个或多个属性进行搜索。

他们提出了类似的东西和数组过滤的一种可能性










1
2
3
4
5
6
7



foreach ( tag[attr1=value] as tag1 )
{

   foreach ( tag[attr2=value] as tag2 )

   {

      // print tag2[attr1=value,attr2=value]

   }
}


我的问题是关于通过两个属性查找部分的本机可能性。我没有在手册中找到它,但并非所有内容都始终在手册中。

有没有人知道有没有这种方式或类似的tag2[attr1=value,attr2=value]或tag2[attr1=value attr2=value]等?


大概八年后,他们想出了一个更新版本。

要使用具有多个属性的简单 HTML DOM 解析器,










1
2
3



foreach($dom->find('tag[attr1][attr2]') as $stuff){

    echo $stuff;
}




据我所知,目前没有办法做到这一点。它应该由该脚本的作者或其他愿意继续开发该项目的开发人员进行编辑。不知道许可证是否允许。












1
2
3
4
5
6
7
8
9
10
11
12



$doc      = new DOMDocument();
@$doc->loadHTML( $html );
$xpath    = new DOMXpath( $doc );
$elements = $xpath->query("//*/div[@class='name'][@id='someId']" );  

if ( $elements->length > 0 )
{

    foreach ( $elements as $index => $node )

    {

        //get node detail here

    }
}






相关讨论





  • 是的,这是 DOMDOcument 功能的一个很好的例子,但正如主题所说,我需要特别简单的 HTML DOM 解析器。如果不可能 100%,那么我需要有人用 100% 的知识说它是这样的。


  • 您无法 100% 解析它。这取决于 HTML 类型,我的意思是它显示 HTML 到 HTML 的差异。另外我在示例中犯了一个错误,请参阅检查此 $xpath->query( "//*/div[@class=\'name\'][@id=\'someId\'][class=\'SomeClassName\ ']??"


  • 你仍然在谈论 DOMDocument。这个问题显然是关于 Simple HTML DOM parser -> simplehtmldom.sourceforge.net






据我所知,查看了 simple_html_dom,除了嵌套的 foreach 循环之外,没有其他方法可以实现您正在寻找的功能。 tag[attr=val][attr2=val]

没有内置支持

此外,每个选择器的作用只是添加到返回的节点,永远不会从它身上拿走,所以我尝试过类似 tag.class[attr=val] or tag#id[attr=val] 的工作,它会模仿一些类似的功能。

同样,我尝试了 $html->find("div[attr=val]")->find("div[attr2=val2]") 但这也失败了,因为简单 HTML DOM 返回一个节点数组而不是一个新的树对象,这使得链接变得不可能。

最好的方法是您在问题中发布的方式。


以前从未使用过简单的 HTML DOM 解析器。但是它的主页说它以 jQuery 方式工作,所以试试 tag[attr1=value][attr2=value] (jQuery: Multiple Attribute Selector)



相关讨论




  • 试过这个。不。如果我做的一切都正确,那么它就行不通了。










推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
author-avatar
sunqingfen5863
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有