preg_replace_callback ile video oynatmak

preg_replace_callback ile daha daha çok şey yapmak mümkün, çalışma mantığını daha kısa ve pratik bir şelide anlatabilmek açısından ben video oyatma örneği hazırladım.

preg_replace_callback metodu hakkında daha fazla bilgiyi php.net in http://php.net/manual/tr/function.preg-replace-callback.php adresinden bakabilirsiniz.

Şimdi konunuyu örnekler ile anlatacak olursam alttaki gibi html kodlarına sahip bir değişkenimiz var

$degisken = '<div class="video">
Bu kısımda konuyu anlatan bir metin bulunur. Bu kısımda konuyu anlatan bir metin bulunur.  
[video]http://www.youtube.com/watch?v=QQQ7kva3LXc&feature=g-crec[/video]
videodan soraki kalan yazılar
<!-- [video]videoUrl[/video] -->
</div>';

Yukardaki değişkenimiz içerisinde bulunan [video] http://www.youtube.com/watch?v=QQQ7kva3LXc&feature=g-crec [/video] şeklindeki bölümü youtube video player olarak değiştireceğiz.

Öncelikle preg_replace_callback metodun kullanacağı metodu yazalım

videoOynat($url){
     $en = 320;
     $boy = 180;
     $video = preg_replace(
               '#http://(?:www\.)?youtube.com/(watch\?v=|v/)(.*?)#i', 
               'http://www.youtube.com/embed/\3', 
               $url[1]
          );
     return '<iframe width="'.$en.'" height="'.180.'" src="'.$video.'" frameborder="0" allowfullscreen></iframe>';   
}

yukardaki yazığım metoda bakacak olursak tek bir parametre alıyor ve string bir metod, geriye veri return ediyor, 1 parametre alıyor ki bu parametre array (dizi değişken) dir preg_replace_callback metodu yazdığım şablon ve şablonun içerisinde almak istediğim verilerin hepsini bir dizi değişken olark bu metoda vericektiir, alt tarafta daha iyi anlayacaksınız.

$sablon = '#\[video\](.*?)\[\/video\]#is'; // yazı içerisinde almak istediğim kısım için 

//en yukardaki yazdığım değişken için videoOynat metodunun kullanımı 

echo preg_replace_callback($sablon, 'videoOynat', $degisken); //Sonuç yazılarınızın arasında video oynayacaktır.

yukardaki kullanımda yazdığım şablon ve (.*?) şeklinde şablonun içerisinde belirttiğim alanı preg_replace_callback metodu videoOynat metoduma şu şekilde bir dizi olarak gönderecektir.

array (
     0 => [video]http://www.youtube.com/watch?v=QQQ7kva3LXc&feature=g-crec[/video]
     1 => http://www.youtube.com/watch?v=QQQ7kva3LXc&feature=g-crec
)

sonuç

Burda ara