• 25-11-2013, 19:31:19
    #1
    Facebook tarzı youtube linki paylaştığımda iframe içerisinde videoyu paylaşak kod arıyorum. Elinde olan var mı ?
  • 25-11-2013, 19:47:07
    #2
    samsunikinciel adlı üyeden alıntı: mesajı görüntüle
    Facebook tarzı youtube linki paylaştığımda iframe içerisinde videoyu paylaşak kod arıyorum. Elinde olan var mı ?
    Buyrun bir örnek hazirladim :

    $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, 20:08:24
    #3
    Teşekkür ederim r10+ verdim
  • 25-11-2013, 21:02:59
    #4
    Kimlik 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
    #5
    @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
    #6
    @saintx;@samsunikinciel;@kingofseo;

    Alıntı
    Diyelim ki ben "asdfh" yazdıktan sonra "http://youtu.be/zxlVvaIEhy0" bu linki ekledim.
    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.

    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
    #7
    @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:42
    #8
    saintx adlı üyeden alıntı: mesajı görüntüle
    @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.
    Ben bunu tek formdan yollamayacağım. Aynı zamanda misal veriyorum.

    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
    #9
    @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)
    		)
    	);