@Kirill-Gorelov
С ума с IT

Правильно получить содержимое тегов регулярным выражением или strpos?

Задача спарсить содержимое между тегами, tr к примеру
<tr>¬
                        <td>A cell</td>¬
                        <td colspan="2" rowspan="2">¬
                        <table border="1" style="background-color: green;">¬
                            <tr>¬
                                <td>Cell</td>¬
                                <td colspan="2" rowspan="2"></td>¬
                            </tr>¬
                            <tr>¬
                                <td>Cell</td>¬
                            </tr>¬
                            <tr>¬
                                <td>Cell</td>¬
                                <td>Cell</td>¬
                                <td>Cell</td>¬
                            </tr>¬
                        </table>¬
                        </td>¬
                    </tr>¬

Если регулярка или мое решение
function extractString($string, $start, $end) 
    {
        $string = " ".$string;
        $ini = strpos($string, $start);
        if ($ini == 0) return "";
        $ini += strlen($start);
        $len = strpos($string, $end, $ini) - $ini;
        return substr($string, $ini, $len);
    }

extractString($table, '<tr>', '</tr>');

Тогда оба решения возьмут содержимое между первым тегом и первым закрытым тегом, и получается дерево элементов не верное.

И получается, что возьмет содержимое
<tr>¬
                        <td>A cell</td>¬
                        <td colspan="2" rowspan="2">¬
                        <table border="1" style="background-color: green;">¬
                            <tr>¬
                                <td>Cell</td>¬
                                <td colspan="2" rowspan="2"></td>¬
                            </tr>¬


А мне нужно
<tr>¬
                        <td>A cell</td>¬
                        <td colspan="2" rowspan="2">¬
                        <table border="1" style="background-color: green;">¬
                            <tr>¬
                                <td>Cell</td>¬
                                <td colspan="2" rowspan="2"></td>¬
                            </tr>¬
                            <tr>¬
                                <td>Cell</td>¬
                            </tr>¬
                            <tr>¬
                                <td>Cell</td>¬
                                <td>Cell</td>¬
                                <td>Cell</td>¬
                            </tr>¬
                        </table>¬
                        </td>¬
                    </tr>


Точно такая же ситуация и с другими тегами ( что естественно).

Я не пойму как решить такую задачу.

Да, есть domdocument, но мне нужно свое решение((((
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы