Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Парсинг таблиц html
 
 автор: Trank   (27.08.2008 в 17:46)   письмо автору
 
 

Может ли кто то подсказать как правильно парсить таблицы? Я решил что оптимально будет сначала выделить строку, а потом в этом строке парсить ячейки, но почему то мой мини парсер ничего не выдает :(

Пример

$html="
<tr class=td>
         <td>text</td>
         <td>text</td>
         <td align=right>123 text</td>
        </td>
    </tr>
";

$pattern = '/<tr class=td><td>(.*)<\/td><td>(.*)<\/td><td align=right>(.*)<\/td><\/tr>/';

preg_match_all($pattern, $html, $matches);

for ($i=0; $i< count($matches[0]); $i++) {
  echo "matched: " . $matches[0][$i] . $matches[1][$i] . $matches[2][$i] . $matches[3][$i] ."<br>";
 } 



подозреваю что то не так в $pattern, но что только не пробовал, не хочет выдавать ничего и все.

  Ответить  
 
 автор: Gangster   (27.08.2008 в 18:01)   письмо автору
 
   для: Trank   (27.08.2008 в 17:46)
 

Есть такой вариант:

<?php
    
    $url 
"http://parse.ru/1.html";
    
$content file_get_contents($url);
    
preg_match_all('/<td>(.+?)<\/td>/'$content$result);
    
preg_match_all('/<td align=right>(.+?)<\/td>/'$content$result2);
    

    echo 
"<PRE>";
        
print_r($result);
    echo 
"</PRE>";
    echo 
"<PRE>";
        
print_r($result2);
    echo 
"</PRE>";
?>

  Ответить  
 
 автор: Gangster   (27.08.2008 в 18:04)   письмо автору
 
   для: Gangster   (27.08.2008 в 18:01)
 

и такой вариант:

<?php
    
    $url 
"http://parse.ru/1.html";
    
$content file_get_contents($url);
    
preg_match_all('/<tr class=td>
         <td>(.+?)<\/td>
         <td>(.+?)<\/td>
         <td align=right>(.+?)<\/td>
        <\/td>
    <\/tr>/'
$content$result);

    

    echo 
"<PRE>";
        
print_r($result);
    echo 
"</PRE>";

?>

Думаю то, что надо

  Ответить  
 
 автор: Gangster   (27.08.2008 в 18:05)   письмо автору
 
   для: Gangster   (27.08.2008 в 18:04)
 


<?php
    
    
    
    $html
="
<tr class=td>
         <td>text</td>
         <td>text</td>
         <td align=right>123 text</td>
        </td>
    </tr>
"

    
preg_match_all('/<tr class=td>
         <td>(.+?)<\/td>
         <td>(.+?)<\/td>
         <td align=right>(.+?)<\/td>
        <\/td>
    <\/tr>/'
$html$result);

    

    echo 
"<PRE>";
        
print_r($result);
    echo 
"</PRE>";

?>

  Ответить  
 
 автор: sim5   (27.08.2008 в 18:14)   письмо автору
 
   для: Gangster   (27.08.2008 в 18:05)
 

Странная таблица, с ошибкой.

  Ответить  
 
 автор: Trank   (27.08.2008 в 23:23)   письмо автору
 
   для: Gangster   (27.08.2008 в 18:05)
 

Спасибо огромное! Работает отлично! :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования