/** * Возвращает массив внутренних ссылок со страницы * * @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; }