2012-11-19 15 views
5

अरे, मैं एक स्ट्रिंग में AJAX का उपयोग कर एक HTML पृष्ठ लोड कर रहा हूं, अब मैं पृष्ठ का शीर्षक ढूंढना चाहता हूं और इसका उपयोग करना चाहता हूं।एचटीएमएल की एक स्ट्रिंग में शीर्षक टैग कैसे प्राप्त करें?

अब मुझे रीगेक्स का उपयोग करके <title> प्राप्त करने का प्रबंधन किया गया है, लेकिन यह टैग शीर्षक के साथ ही टैग देता है और मैं इसे स्ट्रिंग से निकालना चाहता हूं या रेगेक्स में ऐसा करने का कोई तरीका हो सकता है?

var title = result.match(/<title[^>]*>([^<]+)<\/title>/); 

अब मैं कैसे करने के बाद इस/बजाय इस बात का actuall शीर्षक मिलता है:

यह मेरा कोड है?

+0

शीर्षक टैग चुनने के लिए jquery का उपयोग करें ... regex का उपयोग न करें। – nhahtdh

+0

यह एक स्ट्रिंग के अंदर है जो दस्तावेज़ –

+1

में नहीं है, मुझे इसके बारे में पता है, लेकिन मैंने समाधान देखा है जो HTML स्ट्रिंग को पार्स करता है और उस पर काम करता है। संपादित करें: http://stackoverflow.com/questions/704679/parse-html-string-with-jquery – nhahtdh

उत्तर

9

तो जैसे एक jQuery वस्तु में आपकी प्रतिक्रिया एचटीएमएल स्ट्रिंग लोड और पाठ

पुनर्प्राप्त करें
$(response).find("title").text(); 
+0

दस्तावेज़ AJAX अनुरोध का उत्तर है। इसलिए यह document.title – devsathish

+0

अच्छा बिंदु के माध्यम से सुलभ नहीं हो सकता है। मैंने इसे अपने उत्तर से हटा दिया है। – Bruno

+1

यह किसी कारण से सीधे मेरे लिए काम नहीं करता (jQuery 1.9.1), मुझे एक div में प्रतिक्रिया देना पड़ा और इसके बजाय एक jQuery ऑब्जेक्ट में लोड करना पड़ा: 'var div = document.createElement ('div'); div.innerHTML = प्रतिक्रिया; $ (div)। ढूँढें ('शीर्षक')। पाठ(); ' –

9

.match() मैचों में से रिटर्न सरणी, का उपयोग

var title = result.match(/<title[^>]*>([^<]+)<\/title>/)[1]; 

कोष्ठक में मूल्य प्राप्त करने के

+0

धन्यवाद ivan यह काम किया था। लेकिन क्या शीर्षक टैग पाने का कोई बेहतर तरीका है? –

+0

यदि आप स्ट्रिंग के रूप में एचटीएमएल के साथ काम करते हैं, तो आप '/ (। *?)/i' regexp का उपयोग कर सकते हैं। यदि आप jquery का उपयोग करते हैं, तो आप दस्तावेज़ खंड बना सकते हैं और '$ (yourHtmlString) .find (' title ') से मान ले सकते हैं। टेक्स्ट() ' –

2

कोड:

var title = result.match("<title>(.*?)</title>")[1]; 
0

असंवेदनशील मामले में reg exp बनाओ।

var regex = /<title>(.*?)<\/title>/gi; 
var input = "<html><head><title>Hello World</title></head>...</html>"; 
if(regex.test(input)) { 
    var matches = input.match(regex); 
    for(var match in matches) { 
    alert(matches[match]); 
    } 
} else { 
    alert("No matches found!"); 
} 
2

एक अपेक्षाकृत सरल सादे जावास्क्रिप्ट, और गैर regex, दृष्टिकोण:

var htmlString = '<head><title>Some title</title></head><body><p>Some text, in a paragraph!</p></body>', 
    html = document.createElement('html'), 
    frag = document.createDocumentFragment(); 
html.innerHTML = htmlString; 
frag.appendChild(html); 

var titleText = frag.firstChild.getElementsByTagName('title')[0].textContent || frag.firstChild.getElementsByTagName('title')[0].innerText; 

console.log(titleText);​ 

JS Fiddle demo यहाँ पूरा कोड है।

मैं कर दिया है, जाहिर है, अपने HTML स्ट्रिंग में अनुमान लगाना था और (प्रकल्पित से अब तक) हटाया सामग्री भर से <html>/</html> टैग संलग्न। हालांकि, भले ही वे टैग स्ट्रिंग में हैं, फिर भी यह काम करता है: JS Fiddle demo

और एक से थोड़ा अधिक कार्यात्मक दृष्टिकोण:

function textFromHTMLString(html, target) { 
    if (!html || !target) { 
     return false; 
    } 
    else { 
     var fragment = document.createDocumentFragment(), 
      container = document.createElement('div'); 
     container.innerHTML = html; 
     fragment.appendChild(container); 
     var targets = fragment.firstChild.getElementsByTagName(target), 
      result = []; 

     for (var i = 0, len = targets.length; i<len; i++) { 
      result.push(targets[i].textContent || targets[i].innerText); 
     } 
     return result;   
    } 
} 

var htmlString = '<html><head><title>Some title</title></head><body><p>Some text, in a paragraph!</p></body></html>'; 

var titleText = textFromHTMLString(htmlString, 'title'); 

console.log(titleText);​ 

JS Fiddle demo

+0

कमाल का जवाब, कोई regex !!! मैं अपने सिर को सबस्ट्रिंग्स और लम्बाई के साथ बैंग कर रहा हूं जो एचटीएमएल स्ट्रिंग से पहले, दूसरे, तीसरे 'आईएमजी' टैग निकालने की कोशिश कर रहा है। यह अब इतना आसान है !!! – denikov

संबंधित मुद्दे