Помогите с парсингом

Статус
В этой теме нельзя размещать новые ответы.
Убегаю домой.... к сожалению.
Примерно будет так:
PHP:
$tst = browser2($url);
for ($i=0;$i<count($tst[0]);$i++){
      echo $tst[0][$i];
      }
 
Запутался я совсем, ни один из вариантов не подходит, парсить есть чего и регулярка верная:( Может в связях что не так.
Это получает страницу:
PHP:
function browser2($url) {
       $url = 'http://depositfiles.com/ru/files/8wdqykds2';
       $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt';
       $ch = curl_init($url);
       curl_setopt($ch, CURLOPT_URL,$url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
       curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
	   curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file);
       $html = curl_exec($ch);
       curl_close($ch);
       echo $html;
       }
echo browser2($url);
Это регулярное выражение:
PHP:
(?<=\<a href\=\").*(?=\"\>ПО)
Нужно "вырезать" из текста эту регулярку.
 
Если это функция, то её нужно вызывать. Сама она не запустится
PHP:
$www = 'http://depositfiles.com/ru/files/8wdqykds2';
browser2($www);
function browser2($url){
       $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/depo/cookies.txt';
       $ch = curl_init($url);
       curl_setopt($ch, CURLOPT_URL,$url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
       curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
       curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file);
       $html = curl_exec($ch);
       curl_close($ch);
       $shab = '(?<=\<a href\=\").*(?=\"\>ПО)';
       for ($i=0;$i<preg_match_all($shab,$html,$mat);$i++){
       echo $mat[1][$i];
      } 
       }

Добавлено через 2 минуты
С циклом я ошибся :ah:
PHP:
for ($i=0;$i<preg_match_all($shab,$html,$mat);$i++){
      echo $shab[1][$i];
      }
Вот как надо было:
PHP:
for ($i=0;$i<preg_match_all($shab,$html,$mat);$i++){
      echo $mat[1][$i];
      }
 
Если это функция, то её нужно вызывать. Сама она не запустится
PHP:
$www = 'http://depositfiles.com/ru/files/8wdqykds2';
browser2($www);
function browser2($url){
       $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/depo/cookies.txt';
       $ch = curl_init($url);
       curl_setopt($ch, CURLOPT_URL,$url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
       curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
       curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file);
       $html = curl_exec($ch);
       curl_close($ch);
       $shab = '(?<=\<a href\=\").*(?=\"\>ПО)';
       for ($i=0;$i<preg_match_all($shab,$html,$mat);$i++){
       echo $mat[1][$i];
      } 
       }
Добавлено через 2 минуты
С циклом я ошибся :ah:
PHP:
for ($i=0;$i<preg_match_all($shab,$html,$mat);$i++){
      echo $shab[1][$i];
      }
Вот как надо было:
PHP:
for ($i=0;$i<preg_match_all($shab,$html,$mat);$i++){
      echo $mat[1][$i];
      }

Сделал вот так:
PHP:
<? 
$www = 'http://depositfiles.com/ru/files/8wdqykds2';
browser2($www);
function browser2($url){
       $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/depo/cookies.txt';
       $ch = curl_init($url);
       curl_setopt($ch, CURLOPT_URL,$url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
       curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
       curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file);
       $html = curl_exec($ch);
       curl_close($ch);
       $shab = '#(?<=\>\<a href\=\").*(?=\"\>РџРћРџР)#';
       for ($i=0;$i<preg_match_all($shab,$html,$mat);$i++){
       echo $mat[1][$i];
      } 
       } 
?>
Исправил там регулярку (в другой кодировке).

Все равно пустой экран, уже третий час маюсь:(
Спасибо что помогаете:)
 
а так?
PHP:
<?php
$www = 'http://depositfiles.com/ru/files/8wdqykds2';
$page=browser2($www);
$shab = '/(?<=\<a href\=\").*(?=\"\>ПО)/';

if($page){
	if(preg_match_all($shab,$page,$mat)){
	   for ($i=0;$i<preg_match_all($shab,$page,$mat);$i++){
       echo $mat[1][$i];
       } 
	}else{
		echo("shab не найден");
	}
}else{
    echo("Не удалось получить страницу");
}

function browser2($url){
       $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/depo/cookies.txt';
       $ch = curl_init($url);
       curl_setopt($ch, CURLOPT_URL,$url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
       curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
       curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file);
       $html = curl_exec($ch);
       curl_close($ch);	   
	   return($html);
       }  
?>
 
а так?
PHP:
<?php
$www = 'http://depositfiles.com/ru/files/8wdqykds2';
$page=browser2($www);
$shab = '/(?<=\<a href\=\").*(?=\"\>ПО)/';
if($page){
	if(preg_match_all($shab,$page,$mat)){
	   for ($i=0;$i<preg_match_all($shab,$page,$mat);$i++){
       echo $mat[1][$i];
       } 
	}else{
		echo("shab не найден");
	}
}else{
    echo("Не удалось получить страницу");
}
function browser2($url){
       $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/depo/cookies.txt';
       $ch = curl_init($url);
       curl_setopt($ch, CURLOPT_URL,$url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
       curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
       curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file);
       $html = curl_exec($ch);
       curl_close($ch);	   
	   return($html);
       }  
?>

С регуляркой которая тут, тоесть начальная пишет не найден.
С этой (?<=\>\<a href\=\").*(?=\"\>РџРћРџР) пустой лист...
 
чтобы быть уверенным в кодировке преобразовывай входной текст к нужной тебе кодировке с помощью iconv.
На депозите кодировка utf-8 у тебя в файле наверняка windows-1251.
Преобразуй входные параметры таким образом:
PHP:
$page = iconv("UTF-8", "windows-1251", $page); //или в другую нужную тебе кодировку

А вообще попробуй var_dump() поиграться с получаемыми данными. Авось косяк и выловишь...

P.s.: Если я не ошибаюсь...
PHP:
return($html); //неверное написание, по крайней мере всегда так считал...

return $html; //верное
Судя по всему у тебя отключены напрочь все сообщения об ошибках...
 
чтобы быть уверенным в кодировке преобразовывай входной текст к нужной тебе кодировке с помощью iconv.
На депозите кодировка utf-8 у тебя в файле наверняка windows-1251.
Преобразуй входные параметры таким образом:
PHP:
$page = iconv("UTF-8", "windows-1251", $page); //или в другую нужную тебе кодировку
А вообще попробуй var_dump() поиграться с получаемыми данными. Авось косяк и выловишь...
P.s.: Если я не ошибаюсь...
PHP:
return($html); //неверное написание, по крайней мере всегда так считал...
return $html; //верное
Судя по всему у тебя отключены напрочь все сообщения об ошибках...

Ранее уже решил проблему, спасибо всем.
Тему можно закрывать.
 
Описал бы где косяк-то был. Интересно же, да и другие кто тему читает может почерпнут чего из решения.
 
Описал бы где косяк-то был. Интересно же, да и другие кто тему читает может почерпнут чего из решения.

У тебя цикл не верный был, вот верный:
PHP:
$tst = browser2($url);
for ($i=0;$i<count($tst);$i++){
      echo $tst[$i];
      }

Сделал так:
PHP:
function browser2($url) { 
       $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/depo/cookies.txt'; 
       $ch = curl_init($url); 
       curl_setopt($ch, CURLOPT_URL,$url); 
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); 
       curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file); 
       curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file); 
       $html = curl_exec($ch); 
       curl_close($ch); 
       return $html;
       }
$page = browser2($url);
$reg = '/(?<=repeat\"\>\<a href\=\").*(?=\"\>)/';
preg_match($reg, $page, $matches);
for ($i=0;$i<count($matches);$i++){
      echo $matches[$i];
      }
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху