2015-06-10 9 views
6

मैं एक टैग पर एक स्ट्रिंग को विभिन्न हिस्सों में विभाजित करना चाहता हूं।<img> टैग पर PHP विभाजन या विस्फोट स्ट्रिंग

$string = 'Text <img src="hello.png" /> other text.'; 

अगला फ़ंक्शन अभी तक सही तरीके से काम नहीं करता है।

$array = preg_split('/<img .*>/i', $string); 

उत्पादन होना चाहिए

array(
    0 => 'Text ', 
    1 => '<img src="hello.png" />', 
    3 => ' other text.' 
) 

यह किया जाना मैं पैटर्न किस तरह इस्तेमाल करना चाहिए?

संपादित करें यदि एकाधिक टैग हैं तो क्या होगा?

$string = 'Text <img src="hello.png" > hello <img src="bye.png" /> other text.'; 
$array = preg_split('/(<img .*>)/i', $string, -1, PREG_SPLIT_DELIM_CAPTURE); 

और उत्पादन किया जाना चाहिए:

array (
    0 => 'Text ', 
    1 => '<img src="hello.png" />', 
    3 => 'hello ', 
    4 => '<img src="bye.png" />', 
    5 => ' other text.' 
) 

उत्तर

2

आप सही रास्ते में हैं।

$array = preg_split('/(<img .*>)/i', $string, -1, PREG_SPLIT_DELIM_CAPTURE); 

एकाधिक टैग के साथ ठीक से संपादित regex:: आप इस तरह से झंडा PREG_SPLIT_DELIM_CAPTURE सेट करने के लिए

$string = 'Text <img src="hello.png" > hello <img src="bye.png" /> other text.'; 
$array = preg_split('/(<img[^>]+\>)/i', $string, -1, PREG_SPLIT_DELIM_CAPTURE); 

हो जाएगा ताकि उत्पादन:

array(5) { 
    [0]=> 
    string(5) "Text " 
    [1]=> 
    string(22) "<img src="hello.png" >" 
    [2]=> 
    string(7) " hello " 
    [3]=> 
    string(21) "<img src="bye.png" />" 
    [4]=> 
    string(12) " other text." 
} 
+0

इस पुरानी पड़ चुकी है '/(<img .*?\/>)/i'

तो अपने उदाहरण कोड की तरह कुछ हो जाएगा? जब मैं इस कोड को गूंजने का प्रयास करता हूं तो मैं केवल देखता हूं: 'सरणी' – twan

+0

@twan, आपने इसका उपयोग कैसे किया? – Federkun

+0

मैंने इसे पहले ही तय कर दिया है, print_r ($ array) lol के बजाय गूंज का उपयोग कर रहा था। – twan

1

आप गैर शामिल करने की ज़रूरत लालची चरित्र (?) जैसा कि आपके पैटर्न में here वर्णित है, इसे पहले होने वाले पहले को पकड़ने के लिए मजबूर करने के लिए उदाहरण।

$string = 'Text <img src="hello.png" /> hello <img src="bye.png" /> other text.'; 
$array = preg_split('/(<img .*?\/>)/i', $string, -1, PREG_SPLIT_DELIM_CAPTURE); 

var_dump($array); 

कौन सा मुद्रण के लिए परिणाम:

array(5) { 
    [0] => 
    string(5) "Text " 
    [1] => 
    string(23) "<img src="hello.png" />" 
    [2] => 
    string(7) " hello " 
    [3] => 
    string(21) "<img src="bye.png" />" 
    [4] => 
    string(12) " other text." 
} 
संबंधित मुद्दे