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]   

> Описание: Пожалуйста помогите.
lraido
Отправлено: 16 Августа, 2011 - 12:25:28
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Нояб. 2009  


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




Здравствуйте, уважаемые профессиоалы. Улыбка


Из вполне санкцанированного парсера с одного проекта в другой переходят данные. Улыбка


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3.                 <table width="98%" border = 0  align="center" cellpadding="0" cellspacing="0" bordercolor = >
  4.                   <tr>
  5.                   <td width="87%" align="center"> <div id="outer"><div id="wrapper" style="width:100%;">
  6. <div id="header">
  7. PNR Pax Details</div>
  8. <div id="main" class="dataTable">
  9. <table cellpadding="0" cellspacing="0" border="0" style="width:100%;">
  10. <tr class="evenrow">
  11. <td style="width:10%">Select PAX</td>
  12. <td style="width:20%">Name</td>
  13. <td style="width:20%">Surname</td>
  14. <td style="width:20%">Gender</td>
  15. <td style="width:15%">Date of birth</td>
  16. <td style="width:3%">FF</td>
  17. <td style="width:7%"></td>
  18. </tr>
  19. <tr>
  20. <td style="height:2px;" colspan="7"></td></tr>
  21. <tr class="oddRowBlack ">
  22. <td valign="top"  style=""><input type="radio" name="PAXISN" value="66090070" checked>
  23. </td>
  24. <td valign="top"  style="">DAVIT</td>
  25. <td valign="top"  style="">TCHUMBURIDZE</td>
  26. <td valign="top"  style="">Mr.</td>
  27. <td valign="top"  style=""></td>
  28. <td valign="top"  style=""></td>
  29. <td valign="top"  style=""><input type="checkbox" id="PAX66090070" name="PAX66090070"  value="T" ></td>
  30. </tr>
  31. </table>
  32. </div>
  33. <div id="footer"> </div>
  34. </div>
  35. </div>
  36. </td>
  37.                   </tr>
  38.             </table><p>
  39.  
  40.  


Чтобы взять содержимое из


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. <tr class="oddRowBlack ">
  4. <td valign="top"  style=""><input type="radio" name="PAXISN" value="66090070" checked>
  5. </td>
  6. <td valign="top"  style="">DAVIT</td>
  7. <td valign="top"  style="">TCHUMBURIDZE</td>
  8. <td valign="top"  style="">Mr.</td>
  9. <td valign="top"  style=""></td>
  10. <td valign="top"  style=""></td>
  11. <td valign="top"  style=""><input type="checkbox" id="PAX66090070" name="PAX66090070"  value="T" ></td>
  12. </tr>
  13.  
  14.  



Пишу следующее регулярное выражение.

$data1 - пришедший код


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. preg_match_all('|<tr class="oddRowBlack ">(.*)</tr>|',$data1,$tourist_rows,0);
  4.  
  5.  


И ничего не выводит. Огорчение

Стоит записать

preg_match_all('|<td valign="top" style="">(.*)</td>|',$data1,$tourist_rows,0);

Начинает выводить, но ещё прихватывает кучу всего, что недолжно. Однако


Как взять содержимое этого тэга? А ещё лучше содержимое td в этом tr.

Помогите пожалуйста. Улыбка


-----
Мотивация Успеха - http://vk[dot]com/club80816517
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Августа, 2011 - 12:33:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




| - это спецсимвол "или", им нельзя ограничивать паттерн
 
 Top
lraido
Отправлено: 16 Августа, 2011 - 12:39:10
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Нояб. 2009  


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




DeepVarvar пишет:
| - это спецсимвол "или", им нельзя ограничивать паттерн


| - да, он ограничивает область.


-----
Мотивация Успеха - http://vk[dot]com/club80816517
 
 Top
Мелкий Супермодератор
Отправлено: 16 Августа, 2011 - 12:41:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




DeepVarvar пишет:
| - это спецсимвол "или", им нельзя ограничивать паттерн

Можно. Ограничивать можно всем, чем угодно (ну кроме alphanumeric и backslash). Но в регулярке этот символ свою функцию потеряет. Например:


lraido, * по-умолчанию жадная и хватает всё, до чего дотягивается. Про жадность см. тут: http://php.su/lessons/?lesson_17

(Отредактировано автором: 16 Августа, 2011 - 12:42:48)



-----
PostgreSQL DBA
 
 Top
lraido
Отправлено: 16 Августа, 2011 - 12:46:22
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Нояб. 2009  


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




Мелкий пишет:
DeepVarvar пишет:
| - это спецсимвол "или", им нельзя ограничивать паттерн

Можно. Ограничивать можно всем, чем угодно (ну кроме alphanumeric и backslash). Но в регулярке этот символ свою функцию потеряет. Например:


lraido, * по-умолчанию жадная и хватает всё, до чего дотягивается. Про жадность см. тут: http://php.su/lessons/?lesson_17


Значит так?Ему все равно, может неправильная реакция на TR?
PHP:
скопировать код в буфер обмена
  1. |<tr class="oddRowBlack ">(.*)</tr>.*|


Беру примеры отсюда.

http://text[dot]md/primery-reguljarn[dot][dot][dot]razhenij-na-php/

За основу

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if (preg_match('|<title.*?>(.*)</title>|sei', $str, $arr)) $title = $arr[1];
  4.    else $title='';
  5.  


а что такое sei?

(Отредактировано автором: 16 Августа, 2011 - 12:58:45)



-----
Мотивация Успеха - http://vk[dot]com/club80816517
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Августа, 2011 - 13:28:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Мелкий пишет:
Ограничивать можно
только потом не забывать экранировать.

lraido хотел бы побеседовать по ICQ, но тебя там просто не бывает.
А предложение в силе. Сегодня после 20:00 по москве выйти в асю сможешь?
 
 Top
lraido
Отправлено: 16 Августа, 2011 - 13:51:54
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Нояб. 2009  


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




DeepVarvar пишет:
Мелкий пишет:
Ограничивать можно
только потом не забывать экранировать.

lraido хотел бы побеседовать по ICQ, но тебя там просто не бывает.
А предложение в силе. Сегодня после 20:00 по москве выйти в асю сможешь?





В итоге - не получается, а надо!

Решение


PHP:
скопировать код в буфер обмена
  1. |<tr class="oddRowBlack ">(.*?)</tr>|s


То есть:

добавляем s в конец выражения.

(Отредактировано автором: 16 Августа, 2011 - 14:39:12)



-----
Мотивация Успеха - http://vk[dot]com/club80816517
 
 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