Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: регулярное выражение

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: парсинг хтмл определенного вида
Yakim
Отправлено: 01 Мая, 2010 - 14:45:27
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Янв. 2010  
Откуда: Симферополь


Помог: 0 раз(а)




прога генерирует код, надо распарсить, сам не справлюсь =(

CODE (html):
скопировать код в буфер обмена
  1. <HTML><HEAD><TITLE>Opera Password Recovery</TITLE>
  2. <META http-equiv=Content-Type content="text/html"></HEAD>
  3. <BODY><H3>Opera Password Recovery</H3>
  4. <H4>Создано в <A href="http://www.passcape.com" target=newwin>Opera Password Recovery</A></H4>
  5. <P><TABLE cellPadding=5 border=1><TBODY>
  6. <TR bgColor=#b4dcff>
  7. <TH>URL
  8. <TH>поле 1
  9. <TH>поле 2
  10. <TH>поле 3
  11. <TR>
  12. <TD noWrap><A href="link1">link1
  13. <TD noWrap>field11=value11
  14. <TD noWrap style='color=#ff0000' bgColor=#ffffff>field12=value12
  15. <TD noWrap>field13=value13
  16. <TR>
  17. <TD noWrap><A href="link2">link2
  18. <TD noWrap>field21=value21
  19. <TD noWrap>field22=value22
  20. </TR></TBODY></TABLE></P>
  21. <H5>OPR v5.1.0.379 </H5>
  22. <H5>04-30-2010  23:20:26</H5>
  23. </BODY></HTML>


<TR> может быть сколько угодно, закрывается только последний, <TD в <TR> тоже может быть несколько штук, не закрываются

нужно вытаскивать: link и к нему массив field, value
 
 Top
hoid
Отправлено: 02 Мая, 2010 - 10:35:38
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $strs=file('rec.html');
  3. for ($i=0; $i<count($strs); $i++){
  4. if ((strpos($strs[$i],'href')>-1)and(strpos($strs[$i],'TD')>-1)){
  5. $arr=explode('"',$strs[$i]);
  6. $link=$arr[1];
  7. $j=$i+1;
  8. while ((strpos($strs[$j],'TR')!=-1)and(strpos($strs[$j],'TD')>-1)){
  9. $arr=explode('>', $strs[$j]);
  10. $arr=explode('=', $arr[1]);
  11. $res[$link][]=array("field"=>$arr[0], "value"=>$arr[1]);
  12. $j++;
  13. }
  14. }
  15. }
  16. foreach ($res as $key=>$value){
  17. echo $key.'<br/>';
  18. foreach($value as $value2) echo $value2["field"].'='.$value2["value"].'<br/>';
  19. }
  20. ?>

этот код не универсальный, но на данном файле работает
 
 Top
Yakim
Отправлено: 02 Мая, 2010 - 13:49:47
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Янв. 2010  
Откуда: Симферополь


Помог: 0 раз(а)




вроде работает, спасибо огромное =) пойду проверять
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB