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
)
Yorumlar
Yorum yapmak için giriş yapın