2013-04-15 4 views
10

मैं HTML से सभी <span> </span> टैग के बीच सरणी में पाठ लाने के लिए चाहते हैं, मैं इस कोड के साथ की कोशिश की है लेकिन यह केवल एक घटना रिटर्न:HTML से सभी <span> टैग के बीच सरणी में टेक्स्ट कैसे प्राप्त करें?

preg_match('/<span>(.+?)<\/span>/is', $row['tbl_highlighted_icon_content'], $matches); 

echo $matches[1]; 

मेरे HTML:

<span>The wish to</span> be unfairly treated is a compromise attempt that would COMBINE attack <span>and innocen</span>ce. Who can combine the wholly incompatible, and make a unity of what can NEVER j<span>oin? Walk </span>you the gentle way, 

मेरे कोड केवल रिटर्न स्पैन टैग की एक घटना, लेकिन मैं एक PHP सरणी के रूप में HTML में हर अवधि टैग से सभी पाठ प्राप्त करना चाहता हूं।

+4

[regex के साथ पार्सिंग एचटीएमएल?] (Http://stackoverflow.com/a/1732454/1493698) – Antony

+0

मैं एक ऐसी ही सवाल यहाँ http://stackoverflow.com/q/34569269/5477982 –

उत्तर

2

आप preg_match_all समारोह

कोड

$row['tbl_highlighted_icon_content'] = '<span>The wish to</span> be unfairly treated is a compromise attempt that would COMBINE attack <span>and innocen</span>ce. Who can combine the wholly incompatible, and make a unity of what can NEVER j<span>oin? Walk </span>you the gentle way,';  

preg_match_all('/<span>.*?<\/span>/is', $row['tbl_highlighted_icon_content'], $matches); 

var_dump($matches); 
पर स्विच करना

जैसा कि आप अब देख सकते हैं array है सही ढंग से तो आप कर सकते हैं आबादी echo अपने सभी मैचों

+0

धन्यवाद फैबियो ... मेरा हल आपके उत्तर से समस्या :) –

+0

आप दोस्त का स्वागत करते हैं! – Fabio

2

उपयोग preg_match_all() यह एक ही है, यह $ में सभी घटनाओं वापस आ जाएगी है से मेल खाता है सरणी

http://php.net/manual/en/function.preg-match-all.php

+0

एक पार्स नहीं कर सकता है एचटीएमएल एक regex के साथ। [कभी] (http://stackoverflow.com/a/1732454/1493698)। – berkes

+1

सबकुछ की तरह, यह संदर्भ पर निर्भर करता है, यह प्रोग्रामर पर निर्भर करता है कि उसका डेटा कैसा दिखता है, अगर यह केवल विशेष सामग्री वाले स्पैन टैग्स के अंदर है, तो मुझे नहीं लगता कि – aleation

1
यहाँ

है कोड सरणी में सभी काल मूल्य प्राप्त करने के

 $str = "<span>The wish to</span> be unfairly treated is a compromise 
attempt that would COMBINE attack <span>and innocen</span>ce. 
Who can combine the wholly incompatible, and make a unity 
of what can NEVER j<span>oin? Walk </span>you the gentle way,"; 

preg_match_all("/<span>(.+?)<\/span>/is", $str, $matches); 


echo "<pre>"; 
print_r($matches); 

आप व्यवहृत किया जा सकेगा

Array 
(
    [0] => Array 
     (
      [0] => The wish to 
      [1] => and innocen 
      [2] => oin? Walk 
     ) 

    [1] => Array 
     (
      [0] => The wish to 
      [1] => and innocen 
      [2] => oin? Walk 
     ) 

) 

आप ओ या 1 सूचकांक का उपयोग कर सकते

0

यदि आपको किसी तृतीय-पक्ष घटक का उपयोग करने में कोई बात नहीं है, तो मैं आपको Symfony's DomCrawler घटक दिखाना चाहता हूं। यह HTML/XHTML/XML फ़ाइलों को पार्स करने और नोड्स के माध्यम से नेविगेट करने का एक बहुत ही आसान तरीका है।

आप सीएसएस चयनकर्ताओं का भी उपयोग कर सकते हैं। आपका कोड होगा कुछ की तरह:

$crawler = new Crawler($html); 
$spans = $crawler->filter("span"); 
echo $spans[1]->getText();; 

तुम भी एक पूर्ण HTML/XML दस्तावेज़ के लिए, यदि आप अपने कोड का केवल <span>...</span> हिस्सा आवंटित की जरूरत नहीं है, यह ठीक काम करेंगे।

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