当前位置: 首页 > 面试题库 >

如何在PHP中解析HTML?

彭高畅
2023-03-14
问题内容

我知道我们可以使用PHP
DOM
来使用PHP解析HTML。我也在堆栈溢出中发现了很多问题。但是我有一个特定的要求。我有如下的HTML内容

<p class="Heading1-P">
    <span class="Heading1-H">Chapter 1</span>
</p>
<p class="Normal-P">
    <span class="Normal-H">This is chapter 1</span>
</p>
<p class="Heading1-P">
    <span class="Heading1-H">Chapter 2</span>
</p>
<p class="Normal-P">
    <span class="Normal-H">This is chapter 2</span>
</p>
<p class="Heading1-P">
    <span class="Heading1-H">Chapter 3</span>
</p>
<p class="Normal-P">
    <span class="Normal-H">This is chapter 3</span>
</p>

我想解析以上HTML并将内容保存到两个不同的数组中,例如:

$heading$content

$heading = array('Chapter 1','Chapter 2','Chapter 3');
$content = array('This is chapter 1','This is chapter 2','This is chapter 3');

我可以简单地使用jQuery来实现。但是我不确定这是否正确。如果有人能指出我正确的方向,那就太好了。提前致谢。


问题答案:

尝试查看PHP简单HTML DOM解析器

它具有类似于jQuery的出色语法,因此您可以轻松按ID或类选择所需的任何元素

// include/require the simple html dom parser file

$html_string = '
    <p class="Heading1-P">
        <span class="Heading1-H">Chapter 1</span>
    </p>
    <p class="Normal-P">
        <span class="Normal-H">This is chapter 1</span>
    </p>
    <p class="Heading1-P">
        <span class="Heading1-H">Chapter 2</span>
    </p>
    <p class="Normal-P">
        <span class="Normal-H">This is chapter 2</span>
    </p>
    <p class="Heading1-P">
        <span class="Heading1-H">Chapter 3</span>
    </p>
    <p class="Normal-P">
        <span class="Normal-H">This is chapter 3</span>
    </p>';
$html = str_get_html($html_string);
foreach($html->find('span') as $element) {
    if ($element->class === 'Heading1-H') {
        $heading[] = $element->innertext;
    }else if($element->class === 'Normal-H') {
        $content[] = $element->innertext;
    }
}


 类似资料:
  • 问题内容: 如何解析HTML / XML并从中提取信息? 问题答案: 本机XML扩展 我更喜欢使用本机XML扩展]之一,因为它们与PHP捆绑在一起,通常比所有第3方库都快,并为我提供了所需的所有标记控制权。 DOM DOM扩展使您可以使用PHP 5通过DOM API通过XML文档进行操作。它是W3C的Document Object Model Core Level 3的实现,它是一种平台和语言无关

  • 问题内容: 如何解析HTML / XML并从中提取信息? 问题答案: 本机XML扩展 我更喜欢使用本机XML扩展之一,因为它们与PHP捆绑在一起,通常比所有第3方库都快,并为我提供了所需的所有标记控制权。 DOM DOM扩展使您可以通过带有PHP 5的DOM API通过XML文档进行操作。它是W3C的Document Object Model Core Level 3的实现,它是一种平台和语言无关

  • 问题内容: 我有以下JSON字符串: 如何在PHP中解析它并提取s 列表? 问题答案: 您可以使用该函数来解析PHP中的JSON数据(至少=> 5.2.0)。一旦有了PHP对象,就可以轻松地遍历所有配方/成员并使用以下内容访问其标题: (对不起,我现在无法真正运行此代码。希望无论如何它都会有所帮助。)

  • 问题内容: 我想用php上传一个csv文件。上传文件后,我想显示CSV文件的数据。我想举一个如何完成这项任务的例子。 问题答案: 尽管您可以轻松找到如何使用php处理文件上传的教程,并且有一些功能(手动)可以处理CSV,但是我将发布一些代码,因为几天前我从事一个项目,其中包括一些代码,您可以采用… HTML: PHP: 我知道必须有一种更简单的方法来执行此操作,但是我读取了CSV文件并将每个记录的

  • 问题内容: 可能这是最简单的事情,但是我无法以角度将字符串解析为Int。 我正在尝试做的是: 如何求和这些num1和num2值? 谢谢! 问题答案: 您不能(至少目前)不能使用内部角度表达式,因为它们不会直接求值。引用 文档 : Angular不使用JavaScript 来评估表达式。相反,Angular的服务处理这些表达式。 角表达式不必访问全局变量喜欢 ,或。此限制是有意的。它可以防止意外访问

  • 问题内容: 我想知道是否有一种简单的方法可以解析vb.net中的HTML。我知道HTML并不是XML的严格子集,但是如果可以这样处理的话,那就太好了。是否有什么可以让我在VB.net中以类似XML的方式解析HTML的? 问题答案: 我喜欢Html Agility包 -它对开发人员非常友好,免费并且提供源代码。