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

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

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

 

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

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

тема: Грабер - помогите разобраться
 
 автор: Xayc   (23.08.2009 в 11:15)   письмо автору
 
 

Нашел пример одного из граберов, помогите пожалуйста, разобраться в нем.
Вот код:

<?php 

$t
='<div style="padding-top: 10px;"> 
 <table border=0 cellspacing=0 cellpadding=0 align="center"> 
  <tr> 
   <td class="txtr" width=300><a href="team.php?num=8618" class="mnu">"<b>Лайнс</b>" Макола</a> 
   <td class="txtl" width=300>&nbsp;-&nbsp;<a href="team.php?num=8562" class="mnu">"<b>Виктори</b>" Коломбо</a> 
   <td class="txtl" width=50><a href="result.php?day=1920&a=8618&b=8562" target="_blank" class="mnu"><b>0:0</b></a> <a href="result.php?day=1920&a=8618&b=8562" target="_blank"><img src="pics/report2.gif" border=0 width=17 height=12></a> 

 <tr> 
  <td class="txtr" width=300><a href="team.php?num=8624" class="mnu">"<b>Сент-Люсиас</b>" Маннар</a> 
  <td class="txtl" width=300>&nbsp;-&nbsp;<a href="team.php?num=8616" class="mnu">"<b>Гранд Хотел</b>" Веннапува</a> 
  <td class="txtl" width=50><a href="result.php?day=1920&a=8624&b=8616" target="_blank" class="mnu"><b>0:3</b></a> <a href="result.php?day=1920&a=8624&b=8616" target="_blank"><img src="pics/report2.gif" border=0 width=17 height=12></a> 

и так 8 матчей 
 </table> 
</div> 
'


preg_match_all("#<td class=\"txtr\" width=300><a.*?class=\"mnu\"[^<]+<[^>]+>(.+?)<#is"$t,$out); 
unset (
$out[0]); 
preg_match_all("#<td class=\"txtl\" width=300>&nbsp;-&nbsp;<a.*?class=\"mnu\"[^<]+<[^>]+>(.+?)<#is"$t,$out1); 
unset (
$out1[0]); 
preg_match_all("#<td class=\"txtl\" width=50><a.*?class=\"mnu\"[^<]+<[^>]+>(.+?)<#is"$t,$out2); 
unset (
$out2[0]); 
for(
$i=0;$i<count($out[1]); $i++){ 
print 
$out[1][$i]." - ".$out1[1][$i]. " ".$out2[1][$i]."<br>"

?>


Собственно, я вижу что здесь идет поиск совпадения, а затем идут символы, которые я не могу понять, это:
[^<]+<[^>]+>(.+?)<#is", $t,$out);

Что это означает и как в этом разбираться, просто поняв эту структуру я смогу написать грабер сам, буду благодарен любой помощи и ссылкам на литературу.

  Ответить  
 
 автор: heed   (23.08.2009 в 13:49)   письмо автору
 
   для: Xayc   (23.08.2009 в 11:15)
 

docs.php.net::Регулярные выражения в деталях
сохраните страницу и изучайте

[^<]+< сколько-то "не<" символов за которыми "<"
[^>]+> сколько-то "не>" символов за которыми ">"
(.+?) захват скольки-то любых символов за которыми первое-же совпадение записанного дальше
<
#is - модификаторы, один для того чтобы совпадали заглавные со строчными буквы и наоборот
(поддерживается в зависимости от кодировки алфавитов и текущей настройки локали php, здесь не нужен)
другой для того чтобы точка совпадала так-же с переносами строк

о модификаторах здесь
docs.php.net::Модификаторы шаблонов

  Ответить  
 
 автор: Xayc   (23.08.2009 в 16:31)   письмо автору
 
   для: heed   (23.08.2009 в 13:49)
 

Спасибо большое! Буду юзать!

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

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