我正在更新我的网站以设置rDNS,但我在这里询问您对此如何处理我的问题的意见。我将所有IP (IPv4)都放在一个名为$aIP
的数组中。现在我有一个这样的列表:
<tr><td>1.2.3.4</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=1">myserver.com</a></td></tr>
<tr><td>1.2.3.5</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=2"><i>not set</i></a></td></tr>
<tr><td>1.2.3.6</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=3"><i>not set</i></a></td></tr>
<tr><td>1.2.3.7</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=4">test.myserver.com</a></td></tr>
<tr><td>1.2.3.8</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=5"><i>not set</i></a></td></tr>
<tr><td>1.2.3.9</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=6"><i>not set</i></a></td></tr>
现在,我需要当前的URL值(在本例中是myserver.com
、not set
或test.myserver.com
),还需要它所链接的值或完整的rDNS (edit-reverse.cgi?id=1
或1
),该url链接到数组$aIP
中的IP地址。
这将是预期的输出(不是这种输出格式,而是数组或其他格式):
1.2.3.4 => 1, myserver.com
1.2.3.5 => 2, not set
1.2.3.6 => 3, not set
1.2.3.7 => 4, test.myserver.com
1.2.3.8 => 5, not set
1.2.3.9 => 6, not set
请记住,并不是我拥有的所有IP地址都在$aIP
数组中,所以基本上它应该遍历HTML代码并根据$aIP
数组搜索值。
我正在考虑使用正则表达式,但我对它们了解不多,因此它可能是非常低效的代码。处理这个问题的最好方法是什么?
发布于 2012-02-20 21:28:31
我找到了一个完美的解决方案,使用本机函数:
/*** a new dom object ***/
$dom = new domDocument;
/*** load the html into the object ***/
$dom->loadHTML($html);
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
/*** the table by its tag name ***/
$tables = $dom->getElementsByTagName('table');
/*** get all rows from the table ***/
$rows = $tables->item(0)->getElementsByTagName('tr');
/*** loop over the table rows ***/
foreach ($rows as $row)
{
/*** get each column by tag name ***/
$cols = $row->getElementsByTagName('td');
/*** echo the values ***/
echo $cols->item(0)->nodeValue.'<br />';
echo $cols->item(1)->nodeValue.'<br />';
echo $cols->item(2)->nodeValue;
echo '<hr />';
}
可在http://www.phpro.org/examples/Parse-HTML-With-PHP-And-DOM.html找到
谢谢大家。
https://stackoverflow.com/questions/9367067
复制