Youtube Link Yakalayıcı
9
●1.182
- 25-11-2013, 19:31:19Facebook tarzı youtube linki paylaştığımda iframe içerisinde videoyu paylaşak kod arıyorum. Elinde olan var mı ?
- 25-11-2013, 19:47:07Buyrun bir örnek hazirladim :samsunikinciel adlı üyeden alıntı: mesajı görüntüle
$link=$_POST["link"]; if(strstr($link,"youtube.com")){ $site=file_get_contents($link); preg_match_all('@<meta property="og:video" content="(.*?)">@si',$site,$video); if(isset($video[1][0])){ $embed='<iframe width="640" height="360" src="'.$video[1][0].'" frameborder="0" allowfullscreen></iframe>'; } echo $embed; } - 25-11-2013, 21:02:59Kimlik doğrulama veya yönetimden onay bekliyor.@samsunikinciel;, @kingofseo;
Diyelim ki ben "asdfh" yazdıktan sonra "http://youtu.be/zxlVvaIEhy0" bu linki ekledim. $_POST["link"] parametresine "asdfh http://youtu.be/zxlVvaIEhy0" değeri gidecek ve hatalı işlem yapılmış olucak? O yüzden şöyle bi' yapı kullanırsanız hem daha kullanışlı olur hemde olası hataların önüne geçmiş olursunuz.
<?php $post_val = "asdfg http://www.youtube.com/watch?v=zxlVvaIEhy0"; # $post_val = $_POST["link"]; olarak değiştirirsiniz. function find_youtube_url($val) { $embed = "<iframe width=\"640\" height=\"360\" src=\"http://www.youtube.com/embed/%s\" frameborder=\"0\" allowfullscreen></iframe>"; $val_parts = explode(" ", $val); $parse_last_part = parse_url(end($val_parts)); if(!array_key_exists("host", $parse_last_part)) return false; switch($parse_last_part["host"]) { case "youtu.be": { return sprintf($embed, $parse_last_part["path"]); } break; case ("www.youtube.com" || "youtube.com"): { $query = array(); $_query = explode("&", $parse_last_part["query"]); foreach($_query as $key => $value) { $parts = explode("=", $_query[$key]); $query[$parts[0]] = $parts[1]; } return (array_key_exists("v", $query)) ? sprintf($embed, $query["v"]) : false; } break; default: { return false; } } } print_r(find_youtube_url($post_val)); - 25-11-2013, 21:17:48@saintx : Yazdigin kodlar mantikli ama if(isset($video[1][0])) yapdim yani cekilmis olan og:video degeri varsa eger yoksa video embed kodunu vermeyecektir tabi senin yapdigin gibi de olabilir.
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:17:48 -->-> Daha önceki mesaj 22:10:48 --
Kodu güncelledim ve filter_var fonksiyonu kullandim.
ob_start(); header("Content-type:text/html;charset=utf8"); $link="http://www.youtube.com/watch?v=Q0nD2wTrvKg"; if(filter_var($link,FILTER_VALIDATE_URL)){ if(strstr($link,"youtube.com")){ $site=@file_get_contents($link); if(true==$site){ preg_match_all('@<meta property="og:video" content="(.*?)">@si',$site,$video); if(isset($video[1][0])){ $embed='<iframe width="640" height="360" src="'.$video[1][0].'" frameborder="0" allowfullscreen></iframe>'; } }else{ echo "Siteye baglanamadim"; } echo $embed; } }else{ echo "Lütfen gecerli video linki giriniz"; } - 26-11-2013, 00:21:19@saintx;@samsunikinciel;@kingofseo;
Bu şekilde değilde "http://youtu.be/zxlVvaIEhy0" yazdıktan sonra "asdfh" eklersek bu seferde senin fonksiyon çalışmaz veya "http://youtu.be/zxlVvaIEhy0" "asdfasdf" "http://youtu.be/zxlVdfgIEhy0" yazdık o zaman.Alıntı
explode sonrası herdeğeri döngüye aktarıp tek tek kontrol ettirerek bulunan değerleri replace ile postta uygun yerlerle değiştireceksiniz.
Kolay Gelsin. - 26-11-2013, 00:22:57@CoLLeR; Konu sahibi arkadaş Facebook tarzı bi' şey istediği için son gelen değeri işleme aldım. Çünkü Facebook'da CTRL+V yaptığımızda link varsa ve YouTube ise otomatik olarak video önizlemesini ekrana yazdırıyordu. Bende o işlevden esinlenerek öyle yapma gereği duydum.
- 26-11-2013, 15:51:42Ben bunu tek formdan yollamayacağım. Aynı zamanda misal veriyorum.saintx adlı üyeden alıntı: mesajı görüntüle
asdasdasdasdasd
http://www.youtube.com/watch?v=_ovdm...&feature=share
tarzında olacak. Böyle olunca otomatik asdasdasdasdasd yazısını yazmıyor. - 26-11-2013, 16:24:05@samsunikinciel;
Şu betiği deneyebilir misiniz?<?php function replace_embedable_youtube_url($string) { $embed_html = "<iframe width=\"640\" height=\"360\" src=\"http://www.youtube.com/embed/%s\" frameborder=\"0\" allowfullscreen></iframe>"; if(strlen($string) <= 0) return $string; $string_parts = explode(" ", $string); foreach($string_parts as $key => $value) { $parsed_string_parts = parse_url($string_parts[$key]); if(array_key_exists("host", $parsed_string_parts)) { switch($parsed_string_parts["host"]) { case "youtu.be": { $string_parts[$key] = sprintf($embed_html, $parsed_string_parts["path"]); } break; case ("youtube.com" || "www.youtube.com"): { $parsed_url_queries = array(); $url_query_parts = explode("&", $parsed_string_parts["query"]); foreach($url_query_parts as $_key => $_value) { $query_parts = explode("=", $url_query_parts[$_key]); $parsed_url_queries[$query_parts[0]] = $query_parts[1]; } if(array_key_exists("v", $parsed_url_queries)) $string_parts[$key] = sprintf($embed_html, $parsed_url_queries["v"]); } break; default: { #@pass } } } } return implode(" ", $string_parts); } $string = "saintx http://youtu.be/zxlVvaIEhy0 http://youtube.com/watch?v=zxlVvaIEhy0 http://www.youtube.com/watch?v=zxlVvaIEhy0 saintx"; print_r( array( "before" => $string, "after" => replace_embedable_youtube_url($string) ) );