我正在使用PHP Simple HTML DOM Parser(http://simplehtmldom.sourceforge.net/)来浏览网站并输出特定信息。
我正在尝试输出每个表中特定的tr标签的内容,以及特定的p,标签的内容,而不是所有的表和所有段落。
因此,理想情况下,我想设置一些涉及数字参数的PHP代码,这些参数引用目标特定的“nth”,td或p,标记。
作为一名PHP新手,我非常感谢StackOverflow上的专业知识。 感谢您抽出时间和帮助解决我的问题。
第一个问题集就在这里,代码之上。第二个问题集可以在本文的底部找到PHP代码。
第一个问题集:
一个。如何输出每个表的第2和第3个?
和
B中。如何在每个表之后输出第4个段落并排除它包含的a,标记?
在
以下HTML代码
使用
PHP Simple HTML DOM Parser,如以下PHP代码所示
除非
你有一个不同的建议,你认为更好
下面是示例HTML代码,后跟PHP代码和另一个相关问题集。
这是我感兴趣的主要HTML。
<a name=“arbitrary_a_tag_Begin_Item_01”></a>
<h2>Item No. 1 </h2>
<table>
<tbody>
<tr>
<td>Item Description:</td>
<td>Big blue ball</td>
</tr>
<tr>
<td>Property Location:</td>
<td>Storage Closet</td>
</tr>
<tr>
<td>Owner:</td>
<td>Gym</td>
</tr>
<tr>
<td>Cost</td>
<td>20.00</td>
</tr>
<tr>
<td>Vendor:</td>
<td>Jim’s Gym Toys</td>
</tr>
</tbody>
</table>
<p>
Approximate minimum acceptable grage sale price: $10
<br>
6 month redemption period
</p>
<p>
<img src="../dec/Item01.jpg">
</p>
<p>
<a target="new" href="http://pictures/Item01.jpg”>Picture of Item 01</a>
</p>
<p>
Current status: In Stock
<a name=“arbitrary_a_tag_Begin_Item_02></a>
</p>
<h2>Item No. 2 </h2>
<table>
<tbody>
<tr>
<td>Item Description:</td>
<td>Green tennis racket</td>
</tr>
<tr>
<td>Property Location:</td>
<td>Gear Lockers</td>
</tr>
<tr>
<td>Owner:</td>
<td>Tennis Team</td>
</tr>
<tr>
<td>Cost</td>
<td>50.00</td>
</tr>
<tr>
<td>Vendor:</td>
<td>Jim’s Gym Toys</td>
</tr>
</tbody>
</table>
<p>
Approximate minimum acceptable grage sale price: $25
<br>
6 month redemption period
</p>
<p>
<img src="../dec/Item02.jpg">
</p>
<p>
<a target="new" href="http://pictures/Item02.jpg”>Picture of Item 02</a>
</p>
<p>
Current status: In Stock
<a name=“arbitrary_a_tag_Begin_Item_03></a>
</p>
<h2>Item No. 3 </h2>
<table>
<tbody>
<tr>
<td>Item Description:</td>
<td>Red Soccer Ball</td>
</tr>
等。等等。
PHP代码使用“PHP Simple HTML DOM Parser”:
<?php
// Include the library
include('simple_html_dom.php');
$url = 'http://www.URL.com';
// Create DOM from URL or file
$html = file_get_html($url);
foreach($html->find('table') as $table)
{
echo '<table><tbody>';
foreach($table->find('tr') as $tr)
{
echo '<tr>';
foreach($tr->find('td') as $td)
{
echo '<td>';
echo $td->innertext;
echo '</td>';
}
echo '</tr>';
}
echo '</tbody></table><br />';
}
我遇到过一些尝试实现访问特定标记但未成功的事情:
第一个概念
$e = $html->find('table', 0)->find('tr', 1)->find('td');
foreach($e as $d){
echo $d;
}
第二个概念:
$file = file_get_contents($url);
preg_match_all('#<p>([^<]*)</p>#Usi', $file, $matches);
foreach ($matches as $match)
{
echo $match;
}
第二个问题集:
关于上述第一个概念, 如何设置while循环来迭代,让我们说12个表? 例如,这个:$ e = $ html-&gt; find('table',0) 只读第一个表。 然而,我不知道如何用变量替换0,例如$ i,它可以自动增量。
$i = 1;
while($i<=12){
What goes here??
}
$i++
关于第二个概念, 我如何使用这个(或第一个概念):
在每个表
读取每个p标签中的字符串内容(“内容”),并根据字符串(“密钥”)进行检查
只有在内容中找到密钥字符串时才返回字符串“contents”
在输出以匹配字符串为特征的返回“内容”之前,从要输出的信息中排除/删除第二个匹配的字符串(例如,在第一个问题集中,我想抓住特定内容中的所有内容, p,tag,但排除a,tag中的所有内容。
非常感谢您的时间和帮助!