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

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

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

 

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

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

тема: парсить результаты Yandex
 
 автор: 0ne   (12.08.2007 в 22:49)   письмо автору
 
 

Результат:
<a tabindex="10" onclick="w(this,'80.22.82','84=93');" href="http://www.docaudit.ru/programms/obligatory/ka/user_guid/p1/5/4" target="_blank">5.4. <b>Синтаксис</b> <b>регулярных</b> <b>выражений</b> | ЛАБОРАТОРИЯ АУДИТА - CRM системы ... </a>

Вот написал код, но выводит ошибку:

$pattern = "|(?<=tabindex=\"[0-9]+\" onclick=\"w\(this,\'[0-9]+\.[0-9]+\.[0-9]+\'\,\'[0-9]+=[0-9]+\'\)\;\" href=\")(http://)?[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*\'%$]+)?(?=\" target=\"_blank\">)|i";  
  preg_match_all($pattern, $contents, $out);  


Ошибка:
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 'p' in /home/thinkart/www/site1/public_html/spider/read_ya.php on line 7

Помогите, срочно нужно!!!

   
 
 автор: Trianon   (13.08.2007 в 10:37)   письмо автору
 
   для: 0ne   (12.08.2007 в 22:49)
 

У Вас плохо выбран ограничивающий символ регулярки.
| встречается в самом тексте шаблона
Выберие # чтоли...

   
 
 автор: 0ne   (13.08.2007 в 22:02)   письмо автору
 
   для: Trianon   (13.08.2007 в 10:37)
 

Изменил, теперь это выглядит так:

> - 6 строка - >>$pattern = "#(?<=onclick=\"w\(this,\'[0-9]+\.[0-9]+\.[0-9]+\'\,\'[0-9]+=[0-9]+\'\)\;\" href=\")(http://)?[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*\'%$]+)?(?=\" target=\"_blank\">)#i";  
> - 7 строка - >>preg_match_all($pattern, $contents, $out);  


Но не помогло, ошибка такова:
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: lookbehind assertion is not fixed length at offset 78 in /home/thinkart/www/site1/public_html/spider/read_ya.php on line 7

Весь день небыло света, так что сроки совсем поджимают, жду скорейшего ответа!

   
 
 автор: 0ne   (13.08.2007 в 23:18)   письмо автору
 
   для: 0ne   (13.08.2007 в 22:02)
 

Неужели эта задача настолька трудна, что помочь некому?

   
 
 автор: Unkind   (13.08.2007 в 23:41)   письмо автору
 
   для: 0ne   (13.08.2007 в 23:18)
 

Неужели эта задача настолька трудна, что помочь некому?
Мне, например, лень.

   
 
 автор: 0ne   (13.08.2007 в 23:50)   письмо автору
 
   для: Unkind   (13.08.2007 в 23:41)
 

Я вас понимаю, но тогда смысл сидеть на таком форуме?(вопрос риторический)

Видно придётся читать Д.Фридл Регулярные выражения.

А то так и буду сидеть в луже!

   
 
 автор: Unkind   (14.08.2007 в 00:06)   письмо автору
 
   для: 0ne   (13.08.2007 в 23:50)
 

Ну если очень напрячься, то можно предположить, что ошибка в том, что Вы используете выражения переменной длины в условии. Короче, так писать нельзя:
[0-9]+\.[0-9]+\.[0-9]+\'\,\'[0-9]+=[0-9]+

Я бы посоветовал к черту убрать "?<=".

   
 
 автор: 0ne   (14.08.2007 в 00:19)   письмо автору
 
   для: Unkind   (14.08.2007 в 00:06)
 

>Я бы посоветовал к черту убрать "?<=".
Дада, я понял ошибку(вроде читал об этом недавно, а уже забыл), но вот убрать будет сложновато, т.к. этот принцеп единственный который мне пока понятен и приемлим для этого случая.

Вопрос, а можно ли так?
[0-9]{1,2}

   
 
 автор: 0ne   (14.08.2007 в 00:36)   письмо автору
 
   для: 0ne   (14.08.2007 в 00:19)
 

УУУРРААА!!!!
У меня получилось!!!
Я вас всех люблю!!!

Всем кому интересен код парсинка вуаля(php код не приважу, ибо раздел не тот):
$pattern = "#onclick=\"w\(this,\'[0-9]+\.[0-9]+\.[0-9]+\'\,\'[0-9]+=[0-9]+\'\)\;\" href=\"((http://)?[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*\'%$]+)?)\" target=\"_blank\">#i";
preg_match_all($pattern, $contents, $out);

ВСЁ! Тему можно закрывать, всем ответившим огромное человеческое спасибо!

   
Rambler's Top100
вверх

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