PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 1
Bartolomey Отправлено: 09 Января, 2015 - 16:25:40 • Тема: preg_match_all пропускает второе вхождение • Форум: Хранение данных, их вывод и обработка

Ответов: 12
Просмотров: 3603
Здравствуйте, всех с праздниками

У меня подобная проблема.

Есть такой код

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $url = "http://fiorito.com.ua/353316_534.html";
  4.  
  5. function FetchUrl($url, $postvars, $timeout, $ref, $blank){
  6.  
  7. sleep($timeout);
  8.  
  9. echo @date("r")." fetching $url \r\n";
  10.  
  11. $ch = curl_init();
  12.  
  13. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
  14.  
  15. curl_setopt($ch, CURLOPT_HEADER, false);
  16.  
  17. curl_setopt($ch, CURLOPT_TIMEOUT,30);
  18.  
  19. curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
  20.  
  21. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  22.  
  23. curl_setopt($ch, CURLOPT_URL, trim($url));
  24.  
  25. curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
  26.  
  27. $result = curl_exec($ch);
  28.  
  29. if($blank == "1"){
  30.  
  31. $result = preg_replace("/\n/", "", $result);
  32.  
  33. $result = preg_replace("/\r/", "", $result);
  34.  
  35. }
  36.  
  37.  
  38. return $result;
  39.  
  40. }
  41.  
  42. $page = FetchUrl($url, NULL, NULL, NULL, NULL);
  43.  
  44. preg_match_all("#\)1(.+?)cv#sim", $page, $out);
  45.  
  46. $hj =1;
  47.  
  48. foreach($out[1] as $link){
  49.  
  50. exec("echo '".$link."' >> ".$hj.".txt");
  51.  
  52. $hj++;
  53.  
  54. }
  55.  
  56. ?>


Парсит файл со статьями. Помещает их в отдельные файлы, с номером по порядку.
Проблема: По факту из порядка выпадают некоторые файлы, не создаются. То есть вместо 776 файлов, получается 424 файла.

Перепробовал всяческие вариации регулярных выражений, Такие и им подобные

PHP:
скопировать код в буфер обмена
  1. preg_match_all("/\)1([\n\s\r\t\f\w\d А-ЯЭЫЪЬЩЁІЇЄа-яэыъьщёіїє0-9A-Za-z\0032\»\«\-\—\–\{\}\]\[\!\@\#\\\№\$\%\^\&\*\(\)\_\=\+\/\?\,\.\;\:\'\`\~\|\"\<\>\ ]*?)\(cv/im", $page, $out);


Результат один. Уже убил сутки на эксперименты с регулярными выражениями. Пытался найти что не будь по preg_match_all, может у кого были подобные проблемы, ничего найти не смог, наверное плохо искал или не там искал или не то искал.
Люди добрые помогите, направьте на путь истинный. Что я упускаю?

При желании можете провести следственный эксперимент. По указанному в парсере адресу, лежит файле в котором 2-ве статьи, парсер почему то создаёт только один файл.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB