Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Не работает регулярное выражение


Автор: ShamanVoodoo 28.4.2013, 03:14
Код

        $f = file_get_contents('http://asia-fashion-wholesale.com/');
        var_export($f);
        preg_match('/<ul id="mainmenu-nav">(.*)<\/ul>/im', $f, $matches);
        var_export($matches);

Есть вот такой простой код, $f содержит текст страницы - проверено, почему не срабатывает регулярное выражение? 
Почему скажем работает выражение preg_match('/<title>(.*)<\/title>/im', $f, $matches) , а мое нет?
Поясню, итоговая цель получиль данный ul список и выдернуть из него названия категорий.

Автор: ksnk 28.4.2013, 08:21
Цитата(ShamanVoodoo @  28.4.2013,  03:14 Найти цитируемый пост)
 preg_match('/<ul id="mainmenu-nav">(.*?)<\/ul>/im', $f, $matches);

а такое сработает?

Автор: kirpichtion 29.4.2013, 16:28
Откуда взялся модификатор "m"? Это же не JS.

Автор: baldina 29.4.2013, 17:15
Цитата(kirpichtion @ 29.4.2013,  16:28)
Откуда взялся модификатор "m"? Это же не JS.

http://www.php.net/manual/ru/reference.pcre.pattern.modifiers.php

Добавлено через 8 минут и 45 секунд
насчет ? справедливо, модификатор m не обязателен (т.к. не используются ^ и $), но требуется s, иначе точка (.) не сопоставляется с пробелами
Код

'/<ul id="mainmenu-nav">(.*,?)<\/ul>/s'


Добавлено через 10 минут и 7 секунд
либо 
Код

'/<ul id="mainmenu-nav">((?:.|\s)*?)<\/ul>/'

Автор: ShamanVoodoo 30.4.2013, 11:22
спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)