uS Первый Общественный Форум

uS Первый Общественный Форум

Здесь каждый сможет задать свой вопрос и найти на него ответ. Свободна слова, начните свой бизнес, посоветуйте идею, предложите свою работу и многое другое есть здесь.


uS ОбъявленияПоискУчастники
Сегодня: 10.12.2018 - 11:36:33
Страницы:  1  
uS Первый Общественный Форум » Все для Веб Мастерв " Web Master" » Php класс для автоматического создания sitemap.xml
ВАША РЕКЛАМА У НАС ПРИНЕСЕТ ВАМ ПРИБЫЛЬ

И здесь ЕЕ увидят ВСЕ ! SS Быстрое Сервис сокращения ссылок http://ss.uastend.com
АвторСообщение

Google



Гость
Sitemaps — XML-файл с информацией для поисковых систем о страницах веб-сайта, которые подлежат индексации. Sitemaps может помочь поисковикам определить местонахождение страниц сайта, время их последнего обновления, частоту обновления и важность относительно других страниц сайта для того, чтобы поисковая машина смогла более разумно индексировать сайт.

Существует кучу разных способом создания заветного файла sitemap.xml. Есть кучу сервисов, которые могут создать sitemap.xml. Можно и самому написать генератор “налету” или же складывать готовые файлы и скармливать их ботам. Сайт описания формата http://www.sitemaps.org.

Использование протокола Sitemaps не является гарантией того, что веб-страницы будут проиндексированы поисковыми системами, это всего лишь дополнительная подсказка для сканеров, которые смогут выполнить более тщательное сканирование сайта

Для тех – кто хочет спарсить свой сайт в sitemap.xml (разово или по крону) подойдет этот класс:
Сообщение # 1 10.03.18 - 01:00:52

Den



Гость

    Код:
    <?
    class sitemap
    {
    private $sitemap_urls = array();
    private $base;
    private $protocol;
    private $domain;
    private $check = array();
    private $proxy = "";

    //setting list of substring to ignore in urls
    public function set_ignore($ignore_list){
    $this->check = $ignore_list;
    }
    //set a proxy host and port (such as someproxy:8080 or 10.1.1.1:8080
    public function set_proxy($host_port){
    $this->proxy = $host_port;
    }
    //validating urls using list of substrings
    private function validate($url){
    $valid = true;
    //add substrings of url that you don't want to appear using set_ignore() method
    foreach($this->check as $val)
    {
    if(stripos($url, $val) !== false)
    {
    $valid = false;
    break;
    }
    }
    return $valid;
    }

    //multi curl requests
    private function multi_curl($urls){
    // for curl handlers
    $curl_handlers = array();
    //setting curl handlers
    foreach ($urls as $url)
    {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    if (isset($this->proxy) && !$this->proxy == '')
    {
    curl_setopt($curl, CURLOPT_PROXY, $this->proxy);
    }
    $curl_handlers[] = $curl;
    }
    //initiating multi handler
    $multi_curl_handler = curl_multi_init();

    // adding all the single handler to a multi handler
    foreach($curl_handlers as $key => $curl)
    {
    curl_multi_add_handle($multi_curl_handler,$curl);
    }

    // executing the multi handler
    do
    {
    $multi_curl = curl_multi_exec($multi_curl_handler, $active);
    }
    while ($multi_curl == CURLM_CALL_MULTI_PERFORM || $active);

    foreach($curl_handlers as $curl)
    {
    //checking for errors
    if(curl_errno($curl) == CURLE_OK)
    {
    //if no error then getting content
    $content = curl_multi_getcontent($curl);
    //parsing content
    $this->parse_content($content);
    }
    }
    curl_multi_close($multi_curl_handler);
    return true;
    }

    //function to call
    public function get_links($domain){
    //getting base of domain url address
    $this->base = str_replace("http://", "", $domain);
    $this->base = str_replace("https://", "", $this->base);
    $host = explode("/", $this->base);
    $this->base = $host[0];
    //getting proper domain name and protocol
    $this->domain = trim($domain);
    if(strpos($this->domain, "http") !== 0)
    {
    $this->protocol = "http://";
    $this->domain = $this->protocol.$this->domain;
    }
    else
    {
    $protocol = explode("//", $domain);
    $this->protocol = $protocol[0]."//";
    }

    if(!in_array($this->domain, $this->sitemap_urls))
    {
    $this->sitemap_urls[] = $this->domain;
    }
    //requesting link content using curl
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $this->domain);
    if (isset($this->proxy) && !$this->proxy == '')
    {
    curl_setopt($curl, CURLOPT_PROXY, $this->proxy);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $page = curl_exec($curl);
    curl_close($curl);
    $this->parse_content($page);
    }

    //parses content and checks for URLs
    private function parse_content($page){
    //getting all links from href attributes
    preg_match_all("/<a[^>]*href\s*=\s*'([^']*)'|".
    '<a[^>]*href\s*=\s*"([^"]*)"'."/is", $page, $match);
    //storing new links
    $new_links = array();
    for($i = 1; $i < sizeof($match); $i++)
    {
    //walking through links
    foreach($match[$i] as $url)
    {
    //if doesn't start with http and is not empty
    if(strpos($url, "http") === false && trim($url) !== "")
    {
    //checking if absolute path
    if($url[0] == "/") $url = substr($url, 1);
    //checking if relative path
    else if($url[0] == ".")
    {
    while($url[0] != "/")
    {
    $url = substr($url, 1);
    }
    $url = substr($url, 1);
    }
    //transforming to absolute url
    $url = $this->protocol.$this->base."/".$url;
    }
    //if new and not empty
    if(!in_array($url, $this->sitemap_urls) && trim($url) !== "")
    {
    //if valid url
    if($this->validate($url))
    {
    //checking if it is url from our domain
    if(strpos($url, "http://".$this->base) === 0 || strpos($url, "https://".$this->base) === 0)
    {
    //adding url to sitemap array
    $this->sitemap_urls[] = $url;
    //adding url to new link array
    $new_links[] = $url;
    }
    }
    }
    }
    }
    $this->multi_curl($new_links);
    return true;
    }

    //returns array of sitemap URLs
    public function get_array(){
    return $this->sitemap_urls;
    }

    //notifies services like google, bing, yahoo, ask and moreover about your site map update
    public function ping($sitemap_url, $title ="", $siteurl = ""){
    // for curl handlers
    $curl_handlers = array();

    $sitemap_url = trim($sitemap_url);
    if(strpos($sitemap_url, "http") !== 0)
    {
    $sitemap_url = "http://".$sitemap_url;
    }
    $site = explode("//", $sitemap_url);
    $start = $site[0];
    $site = explode("/", $site[1]);
    $middle = $site[0];
    if(trim($title) == "")
    {
    $title = $middle;
    }
    if(trim($siteurl) == "")
    {
    $siteurl = $start."//".$middle;
    }
    //urls to ping
    $urls[0] = "http://www.google.com/webmasters/tools/ping?sitemap=".urlencode($sitemap_url);
    $urls[1] = "http://www.bing.com/webmaster/ping.aspx?siteMap=".urlencode($sitemap_url);
    $urls[2] = "http://search.yahooapis.com/SiteExplorerService/V1/updateNotification".
    "?appid=YahooDemo&url=".urlencode($sitemap_url);
    $urls[3] = "http://submissions.ask.com/ping?sitemap=".urlencode($sitemap_url);
    $urls[4] = "http://rpc.weblogs.com/pingSiteForm?name=".urlencode($title).
    "&url=".urlencode($siteurl)."&changesURL=".urlencode($sitemap_url);

    //setting curl handlers
    foreach ($urls as $url)
    {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURL_HTTP_VERSION_1_1, 1);
    $curl_handlers[] = $curl;
    }
    //initiating multi handler
    $multi_curl_handler = curl_multi_init();

    // adding all the single handler to a multi handler
    foreach($curl_handlers as $key => $curl)
    {
    curl_multi_add_handle($multi_curl_handler,$curl);
    }

    // executing the multi handler
    do
    {
    $multi_curl = curl_multi_exec($multi_curl_handler, $active);
    }
    while ($multi_curl == CURLM_CALL_MULTI_PERFORM || $active);

    // check if there any error
    $submitted = true;
    foreach($curl_handlers as $key => $curl)
    {
    //you may use curl_multi_getcontent($curl); for getting content
    //and curl_error($curl); for getting errors
    if(curl_errno($curl) != CURLE_OK)
    {
    $submitted = false;
    }
    }
    curl_multi_close($multi_curl_handler);
    return $submitted;
    }

    //generates sitemap
    public function generate_sitemap(){
    $sitemap = new SimpleXMLElement('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"></urlset>');
    foreach($this->sitemap_urls as $url)
    {
    $url_tag = $sitemap->addChild("url");
    $url_tag->addChild("loc", htmlspecialchars($url));
    }
    return $sitemap->asXML();
    }
    }
    ?>
Сообщение # 2 10.03.18 - 01:01:29

Den



Гость
Пример работы с php классом для генерации карты сайты:

    Код:
    <?php

    set_time_limit(0);
    include("./sitemap.class.php");
    $sitemap = new sitemap();

    //игнорировать ссылки с расширениями:
    $sitemap->set_ignore(array("javascript:", ".css", ".js", ".ico", ".jpg", ".png", ".jpeg", ".swf", ".gif"));

    //ссылка Вашего сайта:
    $sitemap->get_links("http://diamond-center.com.ua");

    //если нужно вернуть просто массив с данными:
    //$arr = $sitemap->get_array();
    //echo "<pre>";
    //print_r($arr);
    //echo "</pre>";

    header ("content-type: text/xml");
    $map = $sitemap->generate_sitemap();
    echo $map;
    ?>
Сообщение # 3 10.03.18 - 01:02:18

Fargo



Гость
Вот вам пример работы карты sitemap.php
    Код:
    http://олх.su/sitemap
Сообщение # 4 10.03.18 - 01:05:42

Денис






Статистика:
Тем создано:
Сообщений:
Репутация: ±
Нарушения:
Думаю стоит попробовать, если проблем не будет
Сообщение # 5 18.03.18 - 23:20:46
uS Первый Общественный Форум » Все для Веб Мастерв " Web Master" » Php класс для автоматического создания sitemap.xml
База трастовых сайтов 2017 совсем бесплатно ТИЦ 840... Сборка :Предыдущая тема
Страницы:  1  

Сообщение
Имя E-mail
Сообщение

Нажмите на точку возле имени, чтобы вставить обращение к участнику в сообщение

Смайлы:
Ещё смайлы

* При вставке видео с Ютубе нужно указывать только 'хвостик', например: BoUUbs3CvHs
           
Защитный код: (введите цифры, которые на синем фоне)
   
Реклама от Inter Teaser

НАШИ ПАРТНЕРЫ:

Powered by "uaStend.com" & Web ©

http://notarius-averina.kiev.ua http://pereklad.ua http://text.ua