Advertisement
konyakov

Скрипт, получающий все ссылки с сайта

Feb 23rd, 2013
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.97 KB | None | 0 0
  1. <?php
  2. //скрипт, получает все ссылки с сайта
  3.     $site = 'http://konyakov.ru/';
  4.     foreach(get_urls($site) as $url) {
  5.         echo '<a href="'.$url.'">'.$url.'</a><br>'."\n";
  6.     }
  7.     function my_sort($array) {
  8.         $new_array = array();
  9.         foreach($array as $value) {
  10.             $new_array[] = $value;
  11.         }
  12.         return $new_array;
  13.     }
  14.     function DirnameNormal($url) {
  15.         $fulldir = '';
  16.         $explode = explode('/', $url);
  17.         foreach($explode as $i => $dir) {
  18.             if($dir && $i != (count($explode)-1)) {
  19.                 $fulldir .= $dir.'/';
  20.             }
  21.         }
  22.         return $fulldir;
  23.     }
  24.     function JoinToSite($url, $site) {
  25.         $domain = parse_url($site);
  26.         $domain = $domain['scheme'].'://'.$domain['host'];
  27.         if($url{0} == '/') {
  28.             $link = $domain.$url;
  29.         } else if(preg_match('~^http(s)?:~i', $url)) {
  30.             if(parse_url($url, PHP_URL_HOST) == parse_url($site, PHP_URL_HOST)) {
  31.                 $link = $url;
  32.             }
  33.         } else {
  34.             if(!preg_match('~^(ftp(s)?|javascript|mailto):~i',   $url)) {
  35.                 $dirname = DirnameNormal(parse_url($site, PHP_URL_PATH));
  36.                 $link = $domain.'/'.$dirname.$url;
  37.             }
  38.         }
  39.         return (isset($link) ? $link : false);
  40.     }
  41.     function GetAllUrlsFromUrl($url, $all_links) {
  42.         $first = file_get_contents($url);
  43.         preg_match_all('~<a[^>]+href[\x20]?=[\x20\x22\x27]?([^\x20\x22\x27\x3E]+)[\x20\x22\x27]?[^>]*>~i',  $first, $second);
  44.         $array_urls = array();
  45.         foreach($second[1] as $link) {
  46.             $link = JoinToSite($link, $url);
  47.             if($link !== false && !in_array($link, $all_links)) {
  48.                 $array_urls[] = $link;
  49.             }
  50.         }
  51.         return ((count($array_urls) > 0) ? $array_urls : false);
  52.     }
  53.     function get_urls($url, $all_links = array()) {
  54.         $get_urls = GetAllUrlsFromUrl($url, $all_links);
  55.         if($get_urls) {
  56.             if($all_links == array()) {
  57.                 $all_links[] = $url;
  58.             }
  59.             $all_links = array_merge($all_links, $get_urls);
  60.             foreach($get_urls as $url) {
  61.                 $GetAllUrls = get_urls($url, $all_links);
  62.                 return my_sort(array_unique($GetAllUrls));
  63.             }
  64.         } else {
  65.             return $all_links;
  66.         }
  67.     }
  68. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement