21,887
社区成员
发帖
与我相关
我的任务
分享
<html>
<head></head>
<body>
<table name="MainTable" bgcolor="#CCCCCC" width="100%" border="0" cellpadding="0" cellspacing="1">
<tr>
<td class="subtitle" rowspan=2>方向</td>
<td class="subtitle" colspan=2>输入</td>
<td class="subtitle" colspan=2>滤后</td>
<td class="subtitle" rowspan=2>其它</td>
</tr>
<tr>
<td class="subtitle">流量</td>
<td class="subtitle">报文</td>
<td class="subtitle">流量</td>
<td class="subtitle">报文</td>
</tr>
<tr>
<td width="20%">外网接口</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">3 pps</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">0 pps</td>
<td width="20%" rowspan=2 style="text-align:left;padding-left:20px">
伪造地址 0.00 Mbps<br>
路由丢失 0.00 Mbps
</td>
</tr>
<tr>
<td width="20%">内网接口</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">1 pps</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">0 pps</td>
</tr>
</table>
</body>
</html>
$str = <<<STR
<html>
<head></head>
<body>
<table name="MainTable" bgcolor="#CCCCCC" width="100%" border="0" cellpadding="0" cellspacing="1">
<tr>
<td class="subtitle" rowspan=2>方向 </td>
<td class="subtitle" colspan=2>输入 </td>
<td class="subtitle" colspan=2>滤后 </td>
<td class="subtitle" rowspan=2>其它 </td>
</tr>
<tr>
<td class="subtitle">流量 </td>
<td class="subtitle">报文 </td>
<td class="subtitle">流量 </td>
<td class="subtitle">报文 </td>
</tr>
<tr>
<td width="20%">外网接口 </td>
<td width="15%">0.00 Mbps</td>
<td width="15%">3 pps</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">0 pps</td>
<td width="20%" rowspan=2 style="text-align:left;padding-left:20px">
伪造地址 0.00 Mbps<br>
路由丢失 0.00 Mbps
</td>
</tr>
<tr>
<td width="20%">内网接口</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">1 pps</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">0 pps</td>
</tr>
</table>
</body>
</html>
STR;
$dom = new DOMDocument();
$dom->loadHTML( $str );
$xpath = new DOMXPath( $dom );
$el = $xpath->query("//html/body/table[@name='MainTable']/tr[position()=3]/td[position()=3]");
foreach ($el as $k=>$v)
{
echo $v->nodeName."<br/>"; //td
echo $v->getAttribute('width')."<br/>"; // 30%
echo $v->nodeValue;//3 pps
}
<?php
$html1 = '
<html>
<head></head>
<body>
<table name="MainTable" bgcolor="#CCCCCC" width="100%" border="0" cellpadding="0" cellspacing="1">
<tr>
<td class="subtitle" rowspan=2>方向</td>
<td class="subtitle" colspan=2>输入</td>
<td class="subtitle" colspan=2>滤后</td>
<td class="subtitle" rowspan=2>其它</td>
</tr>
<tr>
<td class="subtitle">流量</td>
<td class="subtitle">报文</td>
<td class="subtitle">流量</td>
<td class="subtitle">报文</td>
</tr>
<tr>
<td width="20%">外网接口</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">3 pps</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">0 pps</td>
<td width="20%" rowspan=2 style="text-align:left;padding-left:20px">
伪造地址 0.00 Mbps<br>
路由丢失 0.00 Mbps
</td>
</tr>
<tr>
<td width="20%">内网接口</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">1 pps</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">0 pps</td>
</tr>
</table>
</body>
</html>
';
$html2 = '
<html>
<head></head>
<body>
<table name="MainTable" bgcolor="#CCCCCC" width="100%" border="0" cellpadding="0" cellspacing="1">
<tr>
<td class="subtitle" rowspan=2>方向</td>
<td class="subtitle" colspan=2>输入</td>
<td class="subtitle" colspan=2>滤后</td>
<td class="subtitle" rowspan=2>其它</td>
</tr>
<tr>
<td class="subtitle">流量</td>
<td class="subtitle">报文</td>
<td class="subtitle">流量</td>
<td class="subtitle">报文</td>
</tr>
<tr>
<td width="20%">外网接口</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">3 pps</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">0 pps</td>
<td width="20%" rowspan=2 style="text-align:left;padding-left:20px">
伪造地址 0.00 Mbps<br>
路由丢失 0.00 Mbps
</td>
</tr>
<tr>
<td width="20%">内网接口</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">1 pps</td>
<td width="15%">0.00 Mbps</td>
<td width="15%">0 pps</td>
</tr>
</table>
</body>
</html>
';
$list1 = -1;
preg_match_all("/(\d+(\.\d+)*)\s+(Mbps|pps)/i", $html1, $match1);
echo preg_replace_callback("/(\d+(\.\d+)*)\s+(Mbps|pps)/i", 'cb', $html2);
function cb($matchs){
global $match1, $list1;
$list1 ++;
return ($matchs[1] + $match1[1][$list1]).' '.$matchs[3];
}
?>