ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Помогите пожалуйста с парсером DLE
  #1  
Старый 30.06.2009, 16:21
Аватар для lambda88
lambda88
Новичок
Регистрация: 27.06.2009
Сообщений: 10
Провел на форуме:
13906

Репутация: 0
Unhappy Помогите пожалуйста с парсером DLE

Я только начинаю разбираться в PHP, и вот решил довести до ума парсер DLE сайтов.
У меня возникла такая проблема: не могу сделать вывод полного пути вместо /../ в новостях.
Могу приложить код, если поможет делу.
 
Ответить с цитированием

  #2  
Старый 30.06.2009, 16:34
Аватар для Deathdreams
Deathdreams
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
Провел на форуме:
2603363

Репутация: 278
Отправить сообщение для Deathdreams с помощью ICQ
По умолчанию

конечно поможет,на словах трудно разобраться.
выкладывай сорс
 
Ответить с цитированием

  #3  
Старый 30.06.2009, 16:40
Аватар для lambda88
lambda88
Новичок
Регистрация: 27.06.2009
Сообщений: 10
Провел на форуме:
13906

Репутация: 0
По умолчанию

Все спасибо!!! Сделал!!!
Кто нибудь знает как сделать что бы парсер распозновал [thumb]?

Последний раз редактировалось lambda88; 30.06.2009 в 16:52..
 
Ответить с цитированием

  #4  
Старый 30.06.2009, 16:48
Аватар для lambda88
lambda88
Новичок
Регистрация: 27.06.2009
Сообщений: 10
Провел на форуме:
13906

Репутация: 0
По умолчанию

Прилагаю код парсера с выводом полного пути

PHP код:
<?php

function myReadFile($url) {
    global 
$cookie_file;
  
$ch=curl_init($url);
  
curl_setopt($ch,CURLOPT_RETURNTRANSFER1);
  
curl_setopt($ch,CURLOPT_TIMEOUT,50);
  
curl_setopt($ch,CURLOPT_HEADER,0);
  
curl_setopt($ch,CURLOPT_REFERER,$url);
  
curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0');
  
curl_setopt($chCURLOPT_COOKIEFILE$cookie_file);
  
curl_setopt($chCURLOPT_COOKIEJAR$cookie_file);
  
$contents=curl_exec($ch);
    
//$contents = str_replace("\n","",$contents);
    //$contents = str_replace("\r","",$contents);
  //return 
  
return $contents;
}

function 
preg_match_dotall($in,$patern=null,$i=1){
 if(
$patern !== null || !empty($in)){
  if(
is_array($patern)){
   foreach(
$patern as $subpatern){
     
preg_match($subpatern,$in,$match);
     if(!empty(
$match[$i]))
      return 
trim($match[$i]); 
   }
  }
  else{
   
preg_match($patern,$in,$match);
    if(!empty(
$match[$i]))
      return 
trim($match[$i]); 
  }
 }
}

function 
fix_img($source,$patern,$path_to_save=null){
  if(
$path_to_save==null)
   
$path_to_save="../uploads/posts/"date("Y-m")."/";
 if(!
file_exists($path_to_save)){
    if(!
mkdir($path_to_save0777))
       return 
$source;
 }        
 
$adres=preg_match_dotall($source,$patern);
 
$full_path_info=pathinfo($adres);

 if(
strpos($full_path_info['basename'], '?'))
    list(
$full_path_info['basename'],$query)=explode('?',$full_path_info['basename']);   

 if(!empty(
$full_path_info['extension']))
    
$full_path_info['basename']=str_ireplace(array('.php','.html','.php3','.htm','.asp','.jsp','.php4','.php5','.pl'),".jpeg",$full_path_info['basename']);
 
else
  
$full_path_info['basename']=$full_path_info['basename'].".jpeg";
  
$fullpath=$path_to_save.$full_path_info['basename'];
  
if(
file_exists($fullpath))
     return 
str_ireplace($adres,"http://gamevip.ru/uploads/posts/"date("Y-m")."/".$full_path_info['basename'],$source); 
  elseif(
copy($adres,$fullpath))
{
         if(
filesize($fullpath) && filesize($fullpath)>0)
            return 
str_ireplace($adres,"http://gamevip.ru/uploads/posts/"date("Y-m")."/".$full_path_info['basename'],$source);
         else
            return 
$source;       
}
  else
     return 
$source;    
}

function 
curl_redir_exec($ch) {
    global 
$cookie_file;
  static 
$curl_loops 0;
  static 
$curl_max_loops 20;
  if (
$curl_loops++ >= $curl_max_loops) {
      
$curl_loops 0;
      return 
FALSE;
  }
  
curl_setopt($chCURLOPT_HEADERtrue);
  
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0'); 
    
curl_setopt($chCURLOPT_COOKIEFILE$cookie_file);
  
curl_setopt($chCURLOPT_COOKIEJAR$cookie_file);
  
$data curl_exec($ch);
  list(
$header$data) = explode("\n\n"$data2);
  
$http_code curl_getinfo($chCURLINFO_HTTP_CODE);
  if (
$http_code == 301 || $http_code == 302) {
    
$matches = array();
    
preg_match('/Location:(.*?)\n/'$header$matches);
    
$url = @parse_url(trim(array_pop($matches)));
    if (!
$url){
      
//couldn't process the url to redirect to
      
$curl_loops 0;
      return 
$data;
    }
    
$last_url parse_url(curl_getinfo($chCURLINFO_EFFECTIVE_URL));
    if (!
$url['scheme']) $url['scheme'] = $last_url['scheme'];
    if (!
$url['host']) $url['host'] = $last_url['host'];
    if (!
$url['path']) $url['path'] = $last_url['path'];
    
$new_url $url['scheme'] . '://' $url['host'] . $url['path'] . ($url['query']?'?'.$url['query']:'');
    
curl_setopt($chCURLOPT_URL$new_url);
        
//debug('Redirecting to', $new_url);
    
return curl_redir_exec($ch);
  } else {
    
$curl_loops=0;
    return 
$data;
  }
}

function 
update_cookies($url$login$pass) {
    global 
$cookie_file;
    
$params = array();
    
$params['login_name'] = $login;
    
$params['login_password'] = $pass;
    
$params['login'] = 'submit';
    
$postdata = array();
    foreach (
$params as $name => $value) {
    
$postdata[] = $name.'='.$value;
  }
    
$postdata implode('&'$postdata);
  
$ch curl_init();
  
curl_setopt($chCURLOPT_URL'http://'.$url.'/#');
  
curl_setopt($chCURLOPT_HEADER0);
  
curl_setopt($chCURLOPT_TIMEOUT50);
  
curl_setopt($chCURLOPT_USERAGENT'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)');
  
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
  
curl_setopt($chCURLOPT_RETURNTRANSFER1);
  
curl_setopt($chCURLOPT_COOKIEFILE$cookie_file);
  
curl_setopt($chCURLOPT_COOKIEJAR$cookie_file);
  
curl_setopt($chCURLOPT_POST1);
  
curl_setopt($chCURLOPT_POSTFIELDS$postdata);
  
curl_exec($ch);
  unset(
$ch);
}

function 
transliteral ($qwer)  
{  
      
$NpjLettersFrom "абвгдезиклмнопрстуфцы";  
      
$NpjLettersTo   "abvgdeziklmnoprstufcy";  
      
$NpjBiLetters = array( "й" => "jj""ё" => "jo""ж" => "zh""х" => "kh""ч" => "ch",   
                             
"ш" => "sh""щ" => "shh""э" => "je""ю" => "ju""я" => "ja",  
                             
"ъ" => """ь" => "",);  

      
$NpjCaps  "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯ";  
      
$NpjSmall "абвгдеёжзийклмнопрстуфхцчшщьъыэюя";  

      
$qwer str_replace(".php"""$qwer);  
      
$qwer trim(strip_tags($qwer));  
      
$qwer preg_replace"/\s+/ms""-"$qwer );  
      
$qwer strtr$qwer$NpjCaps$NpjSmall );  
      
$qwer strtr$qwer$NpjLettersFrom$NpjLettersTo );  
      
$qwer strtr$qwer$NpjBiLetters );  

      
$qwer preg_replace("/[^a-z0-9\_\-.]+/mi"""$qwer);  
      
$qwer=preg_replace('#[\-]+#i''-'$qwer);  
      
$qwer strtolower $qwer );  

      if (
strlen($qwer) > 40) {  

        
$qwer substr ($qwer040);  

            if ((
$temp_max strrpos($qwer'-')))  $qwer substr ($qwer0$temp_max);  

      }  

  return 
$qwer;  
}  

function 
date_ ($date_in){
 if(!empty(
$date_in)){
  
$date_in=trim(strtolower($date_in));
  if(
strpos($date_in',') && strpos($date_in':')){
    list(
$data,$time)=explode(',',$date_in);
    
$yes_todaydate("d")!==date("Y-m-d",mktime(0,0,0,date("m"),date("d")-1,date("Y"))) : date("Y-m-d",mktime(0,0,0,date("m")-1,0,date("Y"))) ;
    
$data=strtr($data,array('cегодня'=>date("Y-m-d"),'вчера'=>$yes_today));
    return 
"$data $time:00";  
  }
  else{
   
$mount = array ('january'=>'01','february'=>'02','march'=>'03',
                      
'april'=>'04','may'=>'05','june'=>'06',
                      
'july'=>'07','august'=>'08','september'=>'09',
                      
'october'=>'10','november'=>'11','december'=>'12',
                      
                      
'jan'=>'01','feb'=>'02','mar'=>'03','apr'=>'04',
                      
'jun'=>'06','jul'=>'07','aug'=>'08','sep'=>'09',
                      
'oct'=>'10','nov'=>'11','dec'=>'12',
                      
                      
'января'=>'01','февраля'=>'02','марта'=>'03',
                      
'апреля'=>'04','мая'=>'05','июня'=>'06',
                      
'июля'=>'07','августа'=>'08','сентября'=>'09',
                      
'октября'=>'10','ноября'=>'11','декабря'=>'12',
                      
                      
'янв'=>'01','фев'=>'02','мар'=>'03',
                      
'апр'=>'04','июн'=>'06','июл'=>'07',
                      
'авг'=>'08','сен'=>'09','окт'=>'10',
                      
'ноя'=>'11','дек'=>'12');
                      
   
$date_in=strtr($date_in,$mount);
   list(
$data,$mount,$year)=explode(" ",$date_in);
   if(
is_numeric($data) && is_numeric($data) && is_numeric($year)){
    return  
date("Y-m-d H:i:s",mktime(rand(1,23),rand(1,59),0,$mount,$data,$year));    
   }
  }
 }
 else 
   return 
date("Y-m-d H:i:s"); 
}
взять парсер можно из этой темы
 
Ответить с цитированием

  #5  
Старый 30.06.2009, 16:57
Аватар для lambda88
lambda88
Новичок
Регистрация: 27.06.2009
Сообщений: 10
Провел на форуме:
13906

Репутация: 0
По умолчанию

Кто нибудь знает как сделать что бы парсер распозновал [thumb]? Очень надо!
 
Ответить с цитированием

  #6  
Старый 30.06.2009, 16:58
Аватар для lambda88
lambda88
Новичок
Регистрация: 27.06.2009
Сообщений: 10
Провел на форуме:
13906

Репутация: 0
По умолчанию

Кста там в коде http://gamevip.ru/uploads/posts/ замените на свой сайт
 
Ответить с цитированием

  #7  
Старый 30.06.2009, 18:22
Аватар для FireFenix
FireFenix
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме:
3178262

Репутация: 389
По умолчанию

Цитата:
Сообщение от lambda88  
Кто нибудь знает как сделать что бы парсер распозновал [thumb]? Очень надо!
Regular Expression
И я думаю лучше бы всё перевести на регулярки, а не искать вхождения и парсить в ручную...

Последний раз редактировалось FireFenix; 30.06.2009 в 18:26..
 
Ответить с цитированием

  #8  
Старый 30.06.2009, 19:30
Аватар для lambda88
lambda88
Новичок
Регистрация: 27.06.2009
Сообщений: 10
Провел на форуме:
13906

Репутация: 0
По умолчанию

Я думаю надо собрать хороший парсер, многим новичкам может пригодиться, потомучто по- началу держать сайт одному очень тяжело, а так хоть контент будет
 
Ответить с цитированием

  #9  
Старый 30.06.2009, 19:53
Аватар для FireFenix
FireFenix
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме:
3178262

Репутация: 389
По умолчанию

По началу - новички должны читать мануалы.
А те новички, которые пишут парсеры должны курить http://ua2.php.net/PCRE
 
Ответить с цитированием

  #10  
Старый 30.06.2009, 20:02
Аватар для lambda88
lambda88
Новичок
Регистрация: 27.06.2009
Сообщений: 10
Провел на форуме:
13906

Репутация: 0
По умолчанию

Цитата:
Сообщение от FireFenix  
По началу - новички должны читать мануалы.
А те новички, которые пишут парсеры должны курить http://ua2.php.net/PCRE
Спасибо за помощь
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста diepower Проверка на уязвимости 15 25.03.2009 00:03
Помогите пожалуйста настроить CallBack faust45 *nix 2 17.07.2006 00:15
На сайте есть дырки. Помогите пожалуйста мне в дальнейшем Cnekmp Уязвимости 12 20.02.2006 16:58



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ