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