Regex проблема с несколькими результатами - PullRequest
0 голосов
/ 16 июня 2011

Я занимаюсь разбором php html, и этот код у меня сейчас

function get_tag($htmlelement,$attr, $value, $xml ,$arr) {
    $attr = preg_quote($attr);
    $value = preg_quote($value);
    if($attr!='' && $value!='')
    {
    $tag_regex = '/<'.$htmlelement.'[^>]*'.$attr.'="'.$value.'">(.*?)<\\/'.$htmlelement.'>/si';
    preg_match($tag_regex,$xml,$matches);
    }
    else
    {
    $tag_regex = '/'.$htmlelement.'[^>]*"(.*?)\/'.$htmlelement.'/i';
    preg_match_all($tag_regex,$xml,$matches);
    }
    if($arr)
        return $matches;
    else 
        return $matches[1];
}
$htmlcontent = file_get_contents("doc.html");
$extract = get_tag('tbody','id', 'open', $htmlcontent,false);

$trows = get_tag('tr','', '', $htmlcontent,false);

Строки, которые нужно проанализировать / содержимое в $ extract можно посмотреть здесь http://pastebin.com/ydiAdiuC.

По сути, я читаю html-контент и получаю тег tbody из html.Теперь я хочу взять каждое значение tr и td в теле и использовать его на своей странице.Любая идея, как использовать, я думаю, что я не использую правильный метод реализации preg_match_all.

1 Ответ

7 голосов
/ 16 июня 2011

Используйте для этого PHP DOM Parsers .Не регулярные выражения.

Быстрый подход:

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