2016-04-23 8 views
1

サイトマップを生成するための優れた(無料の)ツールをWebで見つけられなかったので、JavaScriptスクリプトをゼロから作成することにしましたが、正規表現で良い私はいくつかの助けが必要です。サイトマップジェネレータからURLを除外する方法

function processSitemap(myUrl,maxLinks,countMe,checkDate,customDate,defPriority,defFreq){ 
     jQuery.post('../?route=ajax',{sitemap:'1', url:myUrl},function(data){ 
     var resData = data.split("::|::"); 
     var resCount = parseInt(resData[0]); 
     var resLinkData = resData[1]; 
     var resLinks = resLinkData.split("\n"); 
     var ccLinks = []; 
     jQuery(".linksCount").html('<br/>Crawling Link: '+ myUrl +'<br/>Links Found: ' + resLinks.length); 

     for (var i = 0; i < resLinks.length; i++) { 
     var ccData = resLinks[i].trim(); 
     if(jQuery.inArray(ccData, linksArr) == -1){ 
     ccLinks.push(ccData); 
     countLinks++; 
     if(countLinks != maxLinks){ 
     jQuery("#resultList").append('&lt;url&gt;'+'\n'); 
     jQuery("#resultList").append(' &lt;loc&gt;'+ ccData + '&lt;/loc&gt;' + '\n'); 
     if(defPriority != 'N/A'){ 
     jQuery("#resultList").append(' &lt;priority&gt;'+ defPriority + '&lt;/priority&gt;' + '\n'); 
     } 
     if(defFreq != 'N/A'){ 
     defFreqT = defFreq.toString().toLowerCase(); 
     jQuery("#resultList").append(' &lt;changefreq&gt;'+ defFreqT + '&lt;/changefreq&gt;' + '\n'); 
     } 
     if(checkDate != 'N/A'){ 
      if(checkDate == '1'){ 
      var fullDate = new Date(); 
      var twoDigitMonth = fullDate.getMonth()+1+"";if(twoDigitMonth.length==1) twoDigitMonth="0" +twoDigitMonth; 
      var twoDigitDate = fullDate.getDate()+"";if(twoDigitDate.length==1) twoDigitDate="0" +twoDigitDate; 
      var currentDate = fullDate.getFullYear() + "-" + twoDigitMonth + "-" + twoDigitDate; 
      jQuery("#resultList").append(' &lt;lastmod&gt;'+ currentDate + '&lt;/lastmod&gt;' + '\n'); 
      } 
      if(checkDate == '2'){ 
      customDate = customDate.trim();customDate=customDate.split('/'); 
      customDate = customDate[2] + "-" + customDate[1] + "-" + customDate[0]; 
      jQuery("#resultList").append(' &lt;lastmod&gt;'+ customDate + '&lt;/lastmod&gt;' + '\n'); 
      } 
     } 
     jQuery("#resultList").append('&lt;/url&gt;'+'\n'); 
     }else{ 
      jQuery(".percentimg").fadeOut(); 
      jQuery("#resultList").append('&lt;/urlset&gt;'); 
      jQuery(".genCount").html('<br/>Sitemap generated for ' + countLinks + ' links!'); 
      break; 
     } 
     } 
     } 
     if(countLinks == maxLinks){ 
      return false; 
     } 
     if (countMe == maxLinksCrawl){ 
      jQuery(".percentimg").fadeOut(); 
      jQuery("#resultList").append('&lt;/urlset&gt;'); 
      jQuery(".genCount").html('<br/>Crawler Limit Reached! <br/> Sitemap generated for ' + countLinks + ' links!'); 
      return false; 
     } 
     else{ 
     linksArr = linksArr.concat(ccLinks); 
     myUrl= linksArr[countMe]; 
     countMe++; 
     if (parseInt(countMe) < parseInt(linksArr.length)) { 
     processSitemap(myUrl,maxLinks,countMe,checkDate,customDate,defPriority,defFreq); 
     } 
     else{ 
      jQuery(".percentimg").fadeOut(); 
      jQuery("#resultList").append('&lt;/urlset&gt;'); 
      jQuery(".genCount").html('<br/>Sitemap generated for ' + countLinks + ' links!'); 
      return false; 
     } 
     } 
    }); 
} 

は私が

https://example.com/notifications&filter=chats 
https://example.com/page&b=repost 

最も簡単な方法は、何のようないくつかの不要なURL dataから除外する正規表現を使用した:

私は自分のサイトマップを処理するために使用されるこの機能を持っていますか?

+0

続いexample.comですべてのURLを見つけるために、この正規表現を使用することができます'https:// exampから始まるすべてのURLを削除したいle.com'? – rock321987

+0

@ rock321987 '/ notifications *'と '&b = repost'をすべて除外したいと思っています – NineCattoRules

答えて

1

コールバック関数に次の試験を挿入します。

function(data){ 
    // ... 
    for (var i = 0; i < resLinks.length; i++) { 
     if (resLinks[i].match(/(\/notifications&|&b=repost)/)) { 
      continue; 
     } 
     //... 
    } 
    // ... 
} 
+0

本当にありがとう、ありがとう! – NineCattoRules

1

あなたはnotificationsまたは&b=repost

https:\/\/example.com\/(?=.*(notifications|&b=repost)) 

Regex Demo

関連する問題