Показать сообщение отдельно

  #5  
Старый 26.12.2008, 02:00
Imperou$
Познающий
Регистрация: 23.05.2008
Сообщений: 84
Провел на форуме:
192463

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

В общем раскопал вот такой скрипт (раз мне никто помочь не смог).
Это граббер линков, выдирает все ссылки с указанного сайта (по идее).

PHP код:
<?php
    set_time_limit
(0);
    
$site 'http://bash.org.ru/';
    
$mode 2// 1 = Использовать функцию file_get_contents, 2 = Использовать сокеты
    
foreach(get_urls($site) as $url) {
        echo 
'<a href="'.$url.'">'.$url.'</a><br>'."\n";
    }
    @
set_time_limit(0);
    @
ini_set('max_execution_time'0);
    function 
get($action) {
        
$url parse_url($action); 
        
$fp fsockopen($url['host'], 80$errno$errstr30); 
        if(!
$fp) {
            return 
false;
        } else {
            
fputs($fp'GET '.$action.' HTTP/1.0'."\r\n".
            
'Host: '.$url['host']."\r\n".
            
'Referer: '.$url['scheme'].'://'.$url['host'].$url['path']."\r\n\r\n");
            
$result '';
            while(!
feof($fp)) {
                
$result .= fgets($fp128);
            }
            
fclose($fp);
            return 
$result;
        }
    }
    function 
my_sort($array) {
        
$new_array = array();
        foreach(
$array as $value) {
            
$new_array[] = $value;
        }
        return 
$new_array;
    }
    function 
JoinToSite($url$site) {
        
$domain parse_url($site);
        
$domain $domain['scheme'].'://'.$domain['host'];
        if(
$url{0} == '/') {
            
$link $domain.$url;
        } else if(
preg_match('~^http(s)?:~i'$url)) {
            if(
parse_url($urlPHP_URL_HOST) == parse_url($sitePHP_URL_HOST)) {
                
$link $url;
            }
        } else {
            if(!
preg_match('~^(ftp(s)?|javascript|mailto):~i',   $url)) {
                
$dirname '';
                
$explode explode('/'parse_url($sitePHP_URL_PATH));
                foreach(
$explode as $i => $dir) {
                    if(
$dir && $i != (count($explode)-1)) {
                        
$dirname .= $dir.'/';
                    }
                }
                
$link $domain.'/'.$dirname.preg_replace('~(\A|/)\./~''$1'$url);
                
$regex '~/(?!\.\./)[^\x2F]+/\.\./~';
                while(
preg_match($regex$link)) {
                    
$link preg_replace($regex'/'$link);
                }
            }
        }
        return (isset(
$link) ? $link false);
    }
    function 
GetAllUrlsFromUrl($url$all_links) {
        global 
$mode;
        
$first = (($mode == 1) ? @file_get_contents($url) : get($url));
        
preg_match_all('~<a[^>]+href[\x20]?=[\x20\x22\x27]?([^\x20\x22\x27\x3E]+)[\x20\x22\x27]?[^>]*>~i',  $first$second);
        
$array_urls = array();
        foreach(
$second[1] as $link) {
            
$link JoinToSite($link$url);
            if(
$link !== false && !in_array($link$all_links)) {
                
$array_urls[] = $link;
            }
        }
        return ((
count($array_urls) > 0) ? $array_urls false);
    }
    function 
get_urls($url) {
        
$old_links = array();
        
$new_links = array($url);
        while(
true) {
            
$url $new_links[0];
            
$old_links[] = $url;
            
array_shift($new_links);
            
$get_urls GetAllUrlsFromUrl($urlarray_merge($old_links$new_links));
            if(
$get_urls) {
                
$new_links array_merge($get_urls$new_links);
            } else {
                if(
sizeof($new_links)==0) {
                    break;
                } else {
                    continue;
                }
            }
        }
        
sort($old_links);
        return 
$old_links;
    }
?>
Но выдаёт ошибку

Warning: parse_url() expects exactly 1 parameter, 2 given in /home/*****/public_html/*****/site/admin/grabber.php on line 45

Warning: parse_url() expects exactly 1 parameter, 2 given in /home/*****/public_html/*****/site/admin/grabber.php on line 39


В чём может быть проблема? Помогите хоть вы, плиз.
 
Ответить с цитированием