用PHP解析HTML
我有一个问题,我必须做一个网页的解析器。结构如下:用PHP解析HTML,php,html,parsing,Php,Html,Parsing,我有一个问题,我必须做一个网页的解析器。结构如下: <TABLE WIDTH=80%> <tr><td colspan=7><BR><BR></td></tr> <TR> <Td colspan=7><FONT FACE="arial" align=left><B><A NAME="TEST">Anagrafica</B><br&g
<TABLE WIDTH=80%>
<tr><td colspan=7><BR><BR></td></tr>
<TR>
<Td colspan=7><FONT FACE="arial" align=left><B><A NAME="TEST">Anagrafica</B><br></TH>
</TR>
<tr><td colspan=7></td></tr>
<TR>
<TH ALIGN=LEFT ><FONT COLOR="#AA0000" FACE="arial" SIZE="2">Name</FONT></TH>
<TH></TH>
<TH ALIGN=LEFT ><FONT COLOR="#AA0000" FACE="arial" SIZE="2">Surname</FONT></TH>
<TH></TH>
<TH ALIGN=LEFT ><FONT COLOR="#AA0000" FACE="arial" SIZE="2">ID</FONT></TH>
<TH></TH>
<TH ALIGN=LEFT ><FONT COLOR="#AA0000" FACE="arial" SIZE="2">Code</FONT></TH>
</TR>
<tr>
<TD COLSPAN="7">
<HR SIZE="1" NOSHADE></TD>
<TR>
<TR>
<TD ALIGN="left" VALIGN="TOP" NOWRAP><FONT SIZE="1" FACE="arial">Mario</FONT> </TD>
<TD WIDTH="10"><VALIGN="TOP"><FONT SIZE="1" FACE="arial"> </FONT></TD>
<TD ALIGN="CENTER" VALIGN="TOP" NOWRAP><P ALIGN="CENTER"><FONT SIZE="1" FACE="arial"> Mario </FONT></TD>
<TD WIDTH="10"><VALIGN="TOP"><FONT SIZE="1" FACE="arial"> </FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" NOWRAP><FONT SIZE="1" FACE="arial">1</FONT></TD>
<TD WIDTH="10"><VALIGN="TOP"><FONT SIZE="1" FACE="arial">a</FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" NOWRAP><FONT SIZE="1" FACE="arial">132</FONT></TD>
<TR>
<TD ALIGN="left" VALIGN="TOP" NOWRAP><FONT SIZE="1" FACE="arial">Mario</FONT> </TD>
<TD WIDTH="10"><VALIGN="TOP"><FONT SIZE="1" FACE="arial"> </FONT></TD>
<TD ALIGN="CENTER" VALIGN="TOP" NOWRAP><P ALIGN="CENTER"><FONT SIZE="1" FACE="arial"> Mario </FONT></TD>
<TD WIDTH="10"><VALIGN="TOP"><FONT SIZE="1" FACE="arial"> </FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" NOWRAP><FONT SIZE="1" FACE="arial">1</FONT></TD>
<TD WIDTH="10"><VALIGN="TOP"><FONT SIZE="1" FACE="arial">a</FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" NOWRAP><FONT SIZE="1" FACE="arial">132</FONT></TD>
<TR>
Anagrafica
名称
姓
身份证件
密码
马里奥
马里奥
1.
A.
132
马里奥
马里奥
1.
A.
132
我想使用这个脚本获取4列的数据
$start = strpos($content,'<Td colspan=7><FONT FACE="arial" align=left><B><A NAME=');
if ($start == TRUE) {
$end = strpos($content,'</TABLE>',$start) + 8;
$table = substr($content,$start,$end-$start);
preg_match_all("|<TD(.*)</TD>|U",$table,$rows);
$x = 1;
$counter = 1;
echo "<table class=\"TFtable\">";
foreach ($rows[0] as $row){
if ((strpos($row,'<TR')===false)){
preg_match_all("|<TD(.*)</TD>|U",$row,$cells);
$status[$x] = strip_tags($cells[0][0]);
$x = $x+1;
$counter = $counter+1;
}
if ($counter % 7 == 1) {
echo "<tr><td>{$status[2]} - {$status[4]} <br> {$status[6]} - {$status[1]}</td></tr>\n";
$x = 1;
}
}
echo "</table>";
$start=strpos($content),尝试查看而不是重新注册HTML。使用loadHTML()
可以让PHP解析HTML。请看一个例子。如果您实际尝试构建解析器,您可能不想使用预构建的HTML/DOM解析器。如果是这种情况,您可能需要遵循以下步骤:
- 标记化您的输入(您可以使用正则表达式进行此部分)
- 处理你的标记,确定每个标记的含义。
- 您可能需要研究所谓的“递归下降解析器”
- 每个标记可能会更改以下标记的含义
- 您可能需要查看行中的下一个令牌,而不进行处理
- 返回输出,最有可能的形式是表示DOM树的对象
您可能需要查看该语言的正式定义,以确定哪些类型的表达式可能相互跟随。例如,开始标记的定义可能类似于以下内容(尽管这不是正式定义,并且可能包含错误):
”
同样,这可能是非常不准确的,您需要研究语言的正式定义
可能是一个很好的起点。简单:使用。您不应该手动解析htmlObligatory: