Yine uzun bir aradan sonra tekrar merhaba. Daha önceki yazılarımda da demiştim php nin fonksiyonlar topluluğu olduğunu ve bazen görmüşüzdür ki aynı işi yapan farklı fonksiyonlar var. Fakat şunu unutmamalıyız ki hepsinin birbirinden ufakta olsa bir farkı bulunmaktadır.
Bu yazımda php kodlarken sıklıkla kullandığımız explode ile split fonksiyonları arasındaki farka değineceğim. Aslında ikisi de bir veri kümesini belirttiğimiz ayraç ile metni böler. Fakat split fonksiyonu explode ye göre ek bir özelliği daha var o da ayrıyeten regex pattern kullanabilmemizdir.
Hemen yazımızı örnekleyelim. İlk örneğimiz explode fonksiyonu ile olacaktır.
$string = '01/01/1970'; $array = explode('/',$string); print_r($array);
örneği çalıştırdığımız da ekrana şu şekilde bir çıktı verecektir.
Array ( [0] => 01 [1] => 01 [2] => 1970 )
evet explode kenidisine belirtilen ayrac ile stringimizi bölüp $array adlı değişkenimize dizi olarak döndü. Aynı şeyi şimdi regex pattern olarak denersek nasıl bir sonuç döncek ona bakalım şimdide.
$string = "01/01/1970"; $pattern = "[\/]"; $array = explode($pattern,$string); print_r($array);
Bu betiği alıp çalıştırdığınız da ise explode’ nin regex uyumlu olmadığını görüp veriyi de bölmeyip yine bize bir bütün olarak sunduğunu göreceksiniz. Bunun çıktısı da aşağıdaki gibi olacaktır.
Array ( [0] => 01/01/1970 )
Şimdi ise aynı örneklerin split fonksiyonu ile yapılmış hallerine bakalım.
$string = '01/01/1970'; $array = split('/',$string); print_r($array);
Bu betik çalıştırıldığında explode ile aynı görevi görüp stringimizi / lardan bölüp dizi olarak bize dönecektir. Çıktısı aşağıdaki gibi olacaktır.
Array ( [0] => 01 [1] => 01 [2] =>1970 )
Şimdi ise explode ile kullandığımız ikinci örneğimizi split kullanarak yapalım ve çıktımıza bakalım.
$string = "01/01/1970"; $pattern = "[\/]"; $array = split($pattern,$string); print_r($array);
Bu betik çalıştırıldığında sonuç yine değişmeyecek ve kendisine verilen regex pattern e göre stringi bölüp dizi değer olarak bize döndürecektir. Bu örneğin çıktısı ise aşağıdaki gibi olacaktır.
Array ( [0] =>01 [1] => 01 [2] => 1970 )
Evet aradaki farkı galiba anladık. Bu kadar laf salatasından sonra konunun özüne inmek gerekirse explode fonksiyonu kendisine verilen ayracı baz alarak böler ve değer döndürür. Split ise hem ayrac a göre böler hemde regex pattern e göre bölüp sonucu dizi olarak değer döndürür.


teşekkürler ama daha sık yazmalsın siten daima güncel olmalı:)
işten vakit buldukça
Devamlı bu tür dökümanlr yazarsan sitene ziyaret eden cogalır
Güzel makale olmuş. Eline emeğine sağlık kardeşim.
siteniz az ama öz içerikli. Tek bir saçma başlık yok. Yazı için teşekkürler…
teşekkür ederim.
hocam teşekkurler, yazılarınızı çoğaltmanızı istiyoruz
@Mehmet Ali
vakit buldukça bişeyler yazmaya çalışıyorum…
Bir de explode ile örneğin ‘ ‘ (tek boşluk) ayırmak istediğimizi düşünelim. Kelimeler arasında birer boşluk varsa istediğimiz sonucu veriyor ama kelimeler arasında birden fazla boşluk varsa kafası karışıyor bu fonksiyonun. Aynı şeyi split ile yaparsam birden fazla boşluğu tek boşlukmuş gibi algılayıp ayırıyordu eğer hatırladıklarım beni yanıltmıyorsa
öyle ama artık split fonksiyonu kalktı 5.3 den itibaren sanırım.