Как разобрать эти HTML-данные в массиве PHP? - PullRequest
0 голосов
/ 23 марта 2012

Я получаю данные в этой форме, я хочу проанализировать эти HTML-данные в массиве php.

<table class="qprintable" cellspacing="1" cellpadding="0" border="0" width="600">
<tbody>
<tr>
<td width="300" valign="top">
<table class="qprintable2" cellspacing="0" cellpadding="4" border="0" width="100%">
<tbody>
<tr class="phead">
<td colspan="2">
<b></b>
</td>
</tr>
<tr>
<td valign="top">
<div class="first"></div>
<div></div>
<div>2009jobs.agile@gmail.com</div>
<br>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<br>
<br>
<div></div>
<div class="last"></div>
</td>
<td valign="top">
<div class="first"></div>
<br>
<div></div>
<br>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div class="last">&nbsp;</div>
</td>
</tr>
<tr width="290">
<td valign="top" colspan="2">
<div class="first"></div>
<div></div>
<div class="last"></div>
</td>
</tr>
</tbody>
</table>
</td>
<td width="300" valign="top">
<table class="qprintable2" cellspacing="0" cellpadding="4" border="0" width="100%">
<tbody>
<tr class="phead">
<td colspan="2">
<b></b>
</td>
</tr>
<tr>
<td valign="top">
<div class="first"></div>
<div></div>
<div>aerosoft.career@rediffmail.com</div>
<br>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<br>
<br>
<div></div>
<div class="last"></div>
</td>
<td valign="top">
<div class="first"></div>
<br>
<div></div>
<br>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div class="last">&nbsp;</div>
</td>
</tr>
<tr width="290">
<td valign="top" colspan="2">
<div class="first"></div>
<div></div>
<div class="last"></div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Эта очень уродливая таблица ... но если вы вставите, они представляют собой 3 решения

Использование http://simplehtmldom.sourceforge.net/

Написал этот простой код:

    var_dump(parseUglyTable($table)) ;
    function parseUglyTable($table)
    {
        $html = str_get_html($table);
        $data = array(); 

        foreach($html->find('tr') as $row) {


            if($row)
            {
                $td = $row->find('td',0);

                $text = str_replace(array("<div>","</div>","&nbsp;"), "\n", $td->plaintext);
                $text = explode("\n", $text);

                foreach($text as $value)
                {
                    $value  = trim($value);
                    if(empty($value))
                        continue ;

                    $data[]  = $value ;
                }
            }
        }
        return $data;
    }

Вывод

    array
    0 => string '2009jobs.agile@gmail.com' (length=24)
    1 => string '2009jobs.agile@gmail.com' (length=24)
    2 => string 'aerosoft.career@rediffmail.com' (length=30)

Использование preg_match_all

Я подумал, что это единственный адрес электронной почты, который существует в этой уродливой таблице .... см. http://php.net/manual/en/function.preg-match-all.php для получения дополнительной информациис гораздо более эффективным

Зачем использовать Танк или Гай, чтобы убить крысу ???просто спросите в формате JSON или XML

Надеюсь, это поможет

Спасибо :)

0 голосов
/ 23 марта 2012

Создайте строку из нее и php взорвите ее с помощью "\ n"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...