1

首先,我想描述一下这个想法 - 任何人都知道任何 CMS 或简单的网站都有某种块,例如在 wordpress 的主页上的文章列表,每个块都显示在一个信息块中:标题、作者、内容、日期等。所以主要思想是如何找到和分离这些 HTML 块并将它们中的每一个附加到一个数组中。我认为首先需要清除它们:类、ID 和样式。 步骤1:

<div id="box1">
    <h3 class="title_style">Title1</h3>
    <p>content for box1</p>
    <div class="author">Author Name1<span class="style_date">date1<span>any text</div>
</div>
<div id="box2">
    <h3 class="title_style">Title2</h3>
    <p>content for box2</p>
    <div class="author">Author Name2<span class="style_date">date2<span>any text2</div>
</div>

<div>
    <h3>Title1</h3>
    <p>content for box1</p>
    <div>Author Name1<span>date1<span>any text</div>
</div>
<div>
    <h3>Title2</h3>
    <p>content for box2</p>
    <div>Author Name2<span>date2<span>any text2</div>
</div>

第2步: 我需要找到每个块并将它们写入一个数组,这样我就可以将每个块放在表中的一行中,如下所示:(请注意,这些块几乎存在于任何站点上,所以它的标签无关紧要有,它们只是重复不同的内容和属性,只是结构相同)

<table>
    <tr id="block1">
        <td>Title1</td>
        <td>content for box1</td>
        <td>Author Name1</td>
        <td>date1</td>
        <td>any text</td>
    </tr>
    <tr id="block2">
        <td>Title2</td>
        <td>content for box2</td>
        <td>Author Name2</td>
        <td>date2</td>
        <td>any text</td>
    </tr>
</table>

有任何想法吗 ?我需要如何做到这一点的逻辑,而不是代码本身。

4

2 回答 2

2

您可以使用 PHP 的 DOMDocument 类遍历文档的 DOM。

所以你可以做这样的事情:

    $str = <<<STR
      <div id="box1">
        <h3 class="title_style">Title1</h3>
        <p>content for box1</p>
        <div class="author">Author Name1<span class="style_date">date1</span>any text</div>
      </div>
      <div id="box2">
       <h3 class="title_style">Title2</h3>
       <p>content for box2</p>
       <div class="author">Author Name2<span class="style_date">date2</span>any text2</div>
      </div>
    STR;

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

$divs = $dom->getElementsByTagName('div');

foreach ($divs as $div) {
  //read child elements
}
于 2013-02-25T12:20:32.283 回答
1

试试这个库Simple HTML Dom Parser。

于 2013-02-25T12:18:06.123 回答