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

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

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

 

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

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

тема: Считывание данных в массив
 
 автор: Icen   (26.06.2008 в 10:10)   письмо автору
 
 

Здравствуйте уважаемые программисты. Пишу новостной граббер, возник очередной вопрос. Как оптимальнее всего вытащить из стнаницы данные. Значимая часть кода:


<tr> 
         <td style="padding: 10 0 0 15"> 
           <TABLE border=0 cellpadding="0" cellspacing="0" style='border:none' width="100%" bordercolor="#FF9900"> 
             <tr> 
               <td><img src="/dealers/images/arrow.gif" align="absmiddle"><a href='index.php?page=news&module=parts&action=more&newsId=252' class="linkb">Тестирование продавцов одежды BRP</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="text">20.06.2008 12:35</span></td> 
             </tr>     
              
           </table> 
         </td> 
       </tr> 
        
       <tr> 
         <td style="padding: 10 0 0 15"> 
           <TABLE border=0 cellpadding="0" cellspacing="0" style='border:none' width="100%" bordercolor="#FF9900"> 
             <tr> 
               <td><img src="/dealers/images/arrow.gif" align="absmiddle"><a href='index.php?page=news&module=parts&action=more&newsId=251' class="linkb">Спец предложение на востановленные LONG BLOCK для 4 tec гидроциклов  до 17 июня</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="text">16.06.2008 14:48</span></td> 
             </tr>     
              
           </table> 
         </td> 
       </tr> 
        
       <tr> 
         <td style="padding: 10 0 0 15"> 
           <TABLE border=0 cellpadding="0" cellspacing="0" style='border:none' width="100%" bordercolor="#FF9900"> 
             <tr> 
               <td><img src="/dealers/images/arrow.gif" align="absmiddle"><a href='index.php?page=news&module=parts&action=more&newsId=250' class="linkb">Техническая информация по технике BRP</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="text">16.06.2008 11:33</span></td> 
             </tr>     
              
           </table> 
         </td> 
       </tr>


Из полученных данных хочу сформировать массив, к примеру:
Mass[0] = { "20.06.2008 12:35", "Тестирование продавцов одежды BRP", "'index.php?page=news&module=parts&action=more&newsId=252"}
Mass[1] = {"16.06.2008 14:48", "Спец предложение на востановленные LONG BLOCK для 4 tec гидроциклов до 17 июня", "index.php?page=news&module=parts&action=more&newsId=251"}
. . . . . . . . . .

Подскажите, пожалуйста, как оптимальней всего с помощью регулярного выражения выдернуть данные.
Заранее благодарен.

   
 
 автор: AcidTrash   (26.06.2008 в 10:30)   письмо автору
 
   для: Icen   (26.06.2008 в 10:10)
 

Ну если все точно также будет, как вы привели пример html, то

<?php
$text
='html';
preg_match_all("#<a href='(.+?)' class=\"linkb\">(.+?)</a>.*?<span class=\"text\">(.+?)</span>#is",$text,$out);
unset(
$out[0]);
print_r($out);
?>
Переменная $text - html код.

   
 
 автор: Icen   (26.06.2008 в 10:46)   письмо автору
 
   для: AcidTrash   (26.06.2008 в 10:30)
 

Спатибо огромное, все замечательно работает! :)

   
 
 автор: Icen   (01.07.2008 в 12:53)   письмо автору
 
   для: AcidTrash   (26.06.2008 в 10:30)
 

Здравствуйте. Вот делаю по аналогично для:


<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
    <td style="padding:0px 0px 0px 0px" height="19px" width="83px" align="center" valign="middle">
                            <a href="/dealersNews/garantiya_poctanovki/" class="newsDealersDate">30.05.2008</a>
    </td>
    <td align="left" style="padding:0px 0px 0px 10px"><a href="/dealersNews/garantiya_poctanovki/" class="headerDealersNews">Форма постановки на гарантию гидроцикла SQ 800 JM</a>
             </td>
</tr>
</table>


написал для этого кусочка:


preg_match_all("#<a href='(.+?)' class=\"newsDealersNews\">(.+?)</a>  class=\"newsDealersDate\">(.+?)</a>#is",$NewsPage,$out); 


Почемуто не работает, видимо как обычно что то не учёл.

P.S.: Прошу прощения за детские вопросы..

   
 
 автор: AcidTrash   (01.07.2008 в 13:13)   письмо автору
 
   для: Icen   (01.07.2008 в 12:53)
 

<pre>
<?php
$NewsPage
='<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
    <td style="padding:0px 0px 0px 0px" height="19px" width="83px" align="center" valign="middle">
                            <a href="/dealersNews/garantiya_poctanovki/" class="newsDealersDate">30.05.2008</a>
    </td>
    <td align="left" style="padding:0px 0px 0px 10px"><a href="/dealersNews/garantiya_poctanovki/" class="headerDealersNews">Форма постановки на гарантию гидроцикла SQ 800 JM</a>
             </td>
</tr>
</table>'
;
preg_match_all("#<a.*?class=\"newsDealersDate\">(.+?)</a>.*?<a href=\"(.+?)\" class=\"headerDealersNews\">(.+?)</a>#is",$NewsPage,$out);
unset(
$out[0]);
print_r($out);
?>

   
 
 автор: Эй   (01.07.2008 в 13:13)   письмо автору
 
   для: Icen   (01.07.2008 в 12:53)
 

Что то аналогии не вижу. В оригинальном тексте сначала идёт класс "newsDealersDate", затем "newsDealersDate", в регулярном выражении наоборот + там же 2 закрывающих тега "</a>" на один открывающий.

   
Rambler's Top100
вверх

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