PHP,

2015-06-10 25 views
6

numaralı etiketteki diziyi parçalara ayırır veya patlatır. Etiket üzerindeki bir dizeyi farklı parçalara bölmek istiyorum.PHP,

Bir sonraki işlev henüz doğru şekilde çalışmıyor.

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

çıkış

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

i kullanmalıdır desen ne tür halletmek için olmalıdır?

EDIT Birden çok etiket varsa ne olur?

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

Ve çıkış olmalıdır:

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

cevap

2

Sen doğru yolda içindedir.

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

birden etiketi ile düzgün regex düzenlendi:: Bu şekilde bayrak PREG_SPLIT_DELIM_CAPTURE belirlemek zorunda

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

çıktısı verir:

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

bu modası geçmiş mi

'/(<img .*?\/>)/i' böylece örnek kod gibi bir şey olacak? Bu kodu yankılamaya çalıştığımda sadece şunu görüyorum: 'dizi' – twan

+0

@twan, nasıl kullandınız? – Federkun

+0

Zaten sabitledim, print_r ($ dizi) lol yerine echo kullanıyordum. – twan

1

Sen olmayan eklemeniz gerekir açgözlülük karakterini (?) tarif edilen şekilde here tanımladığınız gibi, ilk ortaya çıkması için zorlamak örneği. baskı için neden

$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." 
}