Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Get url from the iframe using PHP

Tags:

How to get the youtube url from the below link?

<iframe title="YouTube video player" width="640" height="390" 
 src="http://www.youtube.com/embed/VvJ037b_kLs" 
frameborder="0" allowfullscreen></iframe> 
like image 466
user2466994 Avatar asked Jun 10 '13 06:06

user2466994


2 Answers

You can use regex and preg_match function

preg_match('/src="([^"]+)"/', $iframe_string, $match);
$url = $match[1];

UPDATE if you have page generated with php or as inline html in php file, you can use buffers to get html out of php and then use regex on it:

first use ob_start(); at the beginning of your page code or if you have some html before your php you can use it for whole page by adding:

<?php ob_start(); ?>

and the beginning of the php file, then at the end, you can get ob buffer in string and applying the regex:

<?php ob_start(); ?>
<iframe src="foo.bar"></iframe>

<iframe src="baz"></iframe>
<?php

$output = ob_get_contents();
ob_end_clean();

// find all iframes generated by php or that are in html    
preg_match_all('/<iframe[^>]+src="([^"]+)"/', $output, $match);

$urls = $match[1];
echo $output;

?>
like image 90
jcubic Avatar answered Sep 25 '22 11:09

jcubic


public function makeiframevideo($url)
{

    // Youtube
    $ytRegExp = "/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/";
    preg_match($ytRegExp, $url, $ytMatch);
    if ($ytMatch && strlen($ytMatch[1]) === 11) {
        return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\"  id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\"  src=\"//www.youtube.com/embed/{$ytMatch[1]}?showinfo=0\" ></iframe>";
    }

    // Instagram
    $igRegExp = "/^(?:https?:\/\/)?(?:www\.)?instagram.com\/p\/(.[a-zA-Z0-9\_]*)/";
    preg_match($igRegExp, $url, $igMatch);
    if ($igMatch && strlen($igMatch[0])) {
        return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\"  id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='{$igMatch[0]}/embed/' ></iframe>";
    }

    // Vine
    $vRegExp = "/^(?:https?:\/\/)?(?:www\.)?vine.co\/v\/(.[a-zA-Z0-9]*)/";
    preg_match($vRegExp, $url, $vMatch);
    if ($vMatch && strlen($vMatch[0])) {
        return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\"  id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='{$vMatch[0]}/embed/simple' ></iframe>";
    }

    // Vimeo
    $vimRegExp = " /\/\/(player.)?vimeo.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/";
    preg_match($vimRegExp, $url, $vimMatch);
    if ($vimMatch && strlen($vimMatch[3])) {
        return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\"  id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='//player.vimeo.com/video/{$vimMatch[3]}' ></iframe>";
    }

    // Dailymotion
    $dmRegExp = "/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/";
    preg_match($dmRegExp, $url, $dmMatch);
    if ($dmMatch && strlen($dmMatch[2])) {
        return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\"  id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='//www.dailymotion.com/embed/video/{$dmMatch[2]}' ></iframe>";
    }

    // Youku
    $youkuRegExp = "/\/\/v\.youku\.com\/v_show\/id_(\w+)/";
    preg_match($youkuRegExp, $url, $youkuMatch);
    if ($youkuMatch && strlen($youkuMatch[1])) {
        return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\"  id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='//player.youku.com/embed/{$youkuMatch[1]}' ></iframe>";
    }



    $mp4RegExp = '/^.+.(mp4|m4v)$/';
    preg_match($mp4RegExp, $url, $mp4Match);

    $oggRegExp = '/^.+.(ogg|ogv)$/';
    preg_match($oggRegExp, $url, $oggMatch);

    $webmRegExp = '/^.+.(webm)$/';
    preg_match($webmRegExp, $url, $webmMatch);

    if ($mp4Match || $oggMatch || $webmMatch) {
        return $url;
    }

    return "";
}
like image 21
Isaac Limón Avatar answered Sep 21 '22 11:09

Isaac Limón