我正在学习正则表达式,但无法弄清楚....我想从DIV获取整个HTML,如何获取?
已经尝试过这个;
/\< td class=\"desc1\"\>(.+)/i
它返回;
Array
(
[0] => < td class="desc1">
[1] =>
)
我匹配的代码就是这个;
<table id="profile" cellpadding="1" cellspacing="1">
<thead>
<tr>
<th colspan="2">Jogador TheInFEcT </th>
</tr>
<tr>
<td>Detalhes</td>
<td>Descrição:</td>
</tr>
</thead><tbody>
<tr>
<td class="empty"></td><td class="empty"></td>
</tr>
<tr>
<td class="details">
<table cellpadding="0" cellspacing="0">
<tbody><tr>
<th>Classificação</th>
<td>11056</td>
</tr>
<tr>
<th>Tribo:</th>
<td>Teutões</td>
</tr>
<tr>
<th>Aliança:</th>
<td>-</td>
</tr>
<tr>
<th>Aldeias:</th>
<td>1</td>
</tr>
<tr>
<th>População:</th>
<td>2</td>
</tr><tr>
<td colspan="2" class="empty"></td>
</tr>
<tr>
<td colspan="2"> <a href="spieler.php?s=1">» Alterar perfil</a></td>
</tr>
</tbody></table>
</td>
<td class="desc1">
<div>STATUS: OFNAaaaAA</div>
</td>
</tr>
</tbody>
</table>
我需要将整个代码放在&lt; td class =“desc1”&gt;,就像那样;
<div >STATUS: OFNAaaaAA< /div>
</td>
</tr>
</tbody>
</table>
有人可以帮助我吗?
提前致谢。
答案 0 :(得分:5)
我通常使用
$dom = DOMDocument::load($htmldata);
用于将HTML代码转换为XML DOM。然后你可以使用
$node = $dom->getElementsById($id);
/* or */
$nodes = $dom->getElementsByTagName($tag);
获取HTML / XML节点。
现在,使用
$node->textContent
获取节点内的数据。
答案 1 :(得分:0)
试试这个,它没有涵盖所有可能的情况,但应该有效:
/<td\s+class=['"]\s*desc1\s*['"]\s*>((.|\n)*)<\/td>/i
测试时使用:http://www.pagecolumn.com/tool/pregtest.htm
编辑:Alan Moore建议的改进解决方案
/<td\s+class=['"]\s*desc1\s*['"]\s*>(.*?)<\/td>/s