Регулярное выражение.

Royal Flash

-=MaestrO=-
Регулярное выражение.

Здравствуйте!

Пишу парсилку никих страниц. И все шло хорошо, пока не столкнулся с таким кодом, из которого мне нужно изьять информацию:

<td>Alfa</td>
<td style="font: 10px">Всякая фигня</td>
<td>123,12</td>

Alfa - это якорь, по которому определяется, нужна ли информация вообще.
Нужная информация - 123,12

PHP:
$pattern = '!<td>Alfa<\/td>
        <td style="font: 10px">Всякая фигня<\/td>
        <td>(\d{1,2}[\.|,]\d{1,8}) </td>!';
preg_match($pattern, $txt, $match);
Подозреваю, что проблемма из-за знаков перехода на новую строку. Просьба подсказать, в чем проблемма.

P.S. Разбираются страницы старого сайта, без движка, в которм вся информация в HTML.
 

Nicholas

Новичок
Сделать исходному тексту str_replace("\n", "") - (привести к строке)
В регулярке убрать переводы строк.
Вот одно из решений =)
 

x-yuri

Новичок
а зачем ты экранируешь слеши, если используешь в качестве ограничителя '!'?

-~{}~ 21.01.09 00:21:

кроме того, точку в классе символов экранировать не надо

-~{}~ 21.01.09 00:33:

еще есть такие варианты:
http://ua2.php.net/manual/ru/book.dom.php
http://phpimpact.wordpress.com/2008/08/07/php-simple-html-dom-parser-jquery-style/

а по поводу регулярных выражений, зачем ты в регулярное выражение вставляешь весь html, ограничь его тем, что действительно важно, а для пробельных символов используй \s
 

FB3

Новичок
Парсить лучше с помощью XSLT, приведя код страницы к валидному XML. А скорей всего кто-нибудь сейчас прикроет эту тему :)
 
Сверху