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

Ihorko

Новичок
Регулярные выражения

Мне необходимо вытянуть из $url_content строки, что находятся между
PHP:
<!--m--><a class=l href="
и
PHP:
\">
Я делаю это таким образом
PHP:
preg_match_all("<!--m--><a class=l href=\"(.*)\">",
     $url_content, $google_link, PREG_PATTERN_ORDER);
однако $google_link = NULL.
Раньше делал то же самое и все работало, а теперь... :(
Если кто-нибудь видит ошибку, подскажите плиз.
 

sage

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

Andreika

"PHP for nubies" reader
откровенная фикня какая-то...
preg_match_all("<!--m--><a class=l href=\"(.*)\">",
$url_content, $google_link, PREG_PATTERN_ORDER);
не могла работать, ибо само выражение криво написано - нет даже ограничителей... если это чистаканкретна пример, то зачем он нужен вместо реального кода?
 

sage

Новичок
Andreika
Ограничителем могут выступать произвольные символы, кроме буквенно-цифровых и обратного слеша '\'. Если ограничительный символ встречается в шаблоне, его необходимо экранировать. Начиная с PHP 4.0.4 в качестве ограничителя доступны комбинации, используемые в Perl: (), {}, [] и <>
так что, вполне вероятно, что это выражение работало
 

Andreika

"PHP for nubies" reader
sage
да? каким это образом? даже если представить, что < > это ограничитель - оно свалится после "-->" ибо там уже должны идти модификаторы
 

sage

Новичок
Andreika
да, ты прав - как-то сразу не подумал.... но интересно то, что в последнее время на форуме частенько встречаются подобные выражения без ограничителей, "которые работают"....
 

Ihorko

Новичок
Автор оригинала: sage
смотри $url_content. возможно, произошли изменения в самом коде, а регулярка осталась той же
Действительно, сейчас посмотрел, если ввести в гугле запрос то в сорсе мы увидим комментарии типа <!--m-->, однако в $url_content их нет (очень странно).
Я попробывал без этого комментария, все равно дает NULL.
Я решил, легче будет, если я покажу полный код:
PHP:
$url = "http://www.google.com/search?num=10&hl=en&q=".$q."&btnG=Google+Search";


   $up = fopen($url, "r");
   while (!feof($up)) {
     $url_content .= fread($up, 1);
   }
   fclose($up);
   var_dump($url, $url_content);

   preg_match_all('#<a class=l href="([^"]+)">#',
     $url_content, $google_links, PREG_PATTERN_ORDER);

var_dump($google_links);
 

Andreika

"PHP for nubies" reader
Ihorko
а наличие в тэге onmouseчего-то там принципиально не замечаешь?

ps. кажись топ твой в правила форума не впишется
 

Ihorko

Новичок
Блин, да что за чудеса? В мозилле нету онмаусчегототам а ехрлорере вижу... Это если ручками в гугле набирать, а если парсать то что скрипт дал, то ни в мозилле ни в ехрлорере нет... (в недоумении)

-~{}~ 25.02.06 15:51:

Ну что ребята, проверили? Чудеса какие-то... Будут какие-то соображения?
 

Andreika

"PHP for nubies" reader
preg_match_all('#<a class=l href="(.*?)">#i',$text,$r);

ЗЫ. код написанный тобой выше работает
 

Ihorko

Новичок
Автор оригинала: Andreika
preg_match_all('#<a class=l href="(.*?)">#i',$text,$r);

ЗЫ. код написанный тобой выше работает
Работает :) Но я по прежнему в недоумении, почему в мозилле и в ехплорере разные сорсы.
Кстати не смотря на это, скрипт работает правильно как в мозилле, так и в ехплорере.
 

Lews

Новичок
Автор оригинала: Ihorko
Работает :) Но я по прежнему в недоумении, почему в мозилле и в ехплорере разные сорсы.
Кстати не смотря на это, скрипт работает правильно как в мозилле, так и в ехплорере.
Наверняка, чтобы обеспечить правильную работу/отображение в разных бразуерах.
 
Сверху