Это удобно делать с помощью регулярных выражений. Например, так:
|
Пример кода: |
parseTags("
<table width='200' border='1'>
<tr>
<td>text1</td>
<td>text2</td>
</tr>
</table>
");
function parseTags($str) {
$tagsCount = preg_match_all("/(<([w]+)[^>]*>)(.*)(</2>)/Usi", $str, $matchs);
if ($tagsCount > 0) {
echo "Tags count = $tagsCount"; // количество тэгов в исходной строке
for ($i = 0; $i < $tagsCount; $i++) {
echo "0$i = ".htmlspecialchars($matchs[0][$i]); // полный тэг
echo "1$i = ".htmlspecialchars($matchs[1][$i]); // открывающий тег полностью
echo "2$i = ".htmlspecialchars($matchs[2][$i]); // имя тега
echo "3$i = ".htmlspecialchars($matchs[3][$i]); // InnerText тега
echo "4$i = ".htmlspecialchars($matchs[4][$i]); // закрывающий тег полностью
parseTags($matchs[3][$i]);
}
}
} |
Выполнение этого кода выдаст вот такой результат:
|
Пример кода: |
Tags count = 1
00 = <table width='200' border='1'> <tr> <td>text1</td> <td>text2</td> </tr> </table>
10 = <table width='200' border='1'>
20 = table
30 = <tr> <td>text1</td> <td>text2</td> </tr>
40 = </table>
Tags count = 1
00 = <tr> <td>text1</td> <td>text2</td> </tr>
10 = <tr>
20 = tr
30 = <td>text1</td> <td>text2</td>
40 = </tr>
Tags count = 2
00 = <td>text1</td>
10 = <td>
20 = td
30 = text1
40 = </td>
01 = <td>text2</td>
11 = <td>
21 = td
31 = text2
41 = </td> |
Ну а дальнейшее завит от того, что надо получить.