コード例 #1
0
ファイル: Maps.php プロジェクト: MichaelGogeshvili/strap
 /**
  * Возвращает массив внутренних ссылок со страницы
  * 
  * @param type $urlPage адресс страницы
  * @return array массив ссылок
  */
 public function getLincPage($urlPage)
 {
     $urlPage = trim($urlPage);
     if (empty($urlPage)) {
         echo "Empty " . $urlPage;
         return array();
     }
     try {
         // получаем код страницы
         $mdlSites = new Application_Model_Sites();
         $page = $mdlSites->curlResponse($urlPage, TRUE);
         //curlResponse($url, $body=FALSE)
         $html = $page['body'];
         // file_get_contents($urlPage);
         // разбиваем по тегу ссылки
         $a = explode("<a", $html);
         // удаляем первый элемент он нам не нужен
         array_shift($a);
         // массив первичных результатов
         $res = array();
         // проганяем по циклу
         foreach ($a as $value) {
             // отрезаем полную часть ссылки
             $parts = explode('>', $value);
             // извлекаем href
             foreach ($parts as $val[0]) {
                 $match = array();
                 preg_match('/href="(.+)/', $val[0], $match);
                 if ($match) {
                     // обрезаем по кавычке ссылку
                     $str = explode('"', $match[1]);
                     // проверка на якоря и корень сайта
                     $str[0] = trim($str[0]);
                     $len = strlen($str[0]);
                     if ($str[0] != '/' && $str[0] != '' && $str[0][0] != '#') {
                         $res[] = $str[0];
                     }
                 }
             }
         }
         // массив результатов
         $finalRes = array();
         // парсим для проверки хоста
         $arrUrlPage = parse_url($urlPage);
         foreach ($res as $url) {
             $url = urldecode($url);
             $val = parse_url($url);
             if (isset($val['path']) && $this->getPathExp($val['path'])) {
                 // если начинается с хоста
                 if (!empty($val['host']) && $arrUrlPage['host'] === $val['host'] && !empty($val['scheme']) && $arrUrlPage['scheme'] === $val['scheme']) {
                     if ($val['host'] == $arrUrlPage['host'] && $val['path'] != '') {
                         $finalRes[] = $val['scheme'] . '://' . $val['host'] . $val['path'];
                     }
                 } else {
                     // иначе от корня
                     if (empty($val['host'])) {
                         if (!empty($val['path']) && $val['path'][0] == '/') {
                             $finalRes[] = $arrUrlPage['scheme'] . '://' . $arrUrlPage['host'] . $val['path'];
                         }
                     }
                 }
             }
         }
     } catch (Zend_Exception $e) {
         $finalRes = array();
     }
     $finalRes = array_unique($finalRes);
     return $finalRes;
 }