首先,我想描述一下这个想法 - 任何人都知道任何CMS或一个简单的网站都有某种类型的块,例如wordpress主页上的文章列表,每个块都显示在一个信息块中:Title ,作者,内容,日期等 因此,主要思想是如何查找和分离这些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>
有什么想法吗?我需要逻辑如何做到这一点,而不是代码本身。
答案 0 :(得分: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
}
答案 1 :(得分:1)
试试这个图书馆Simple HTML Dom Parser.