Comment obtenir l'URL youtube à partir du lien ci-dessous?
<iframe title="YouTube video player" width="640" height="390"
src="http://www.youtube.com/embed/VvJ037b_kLs"
frameborder="0" allowfullscreen></iframe>
Vous pouvez utiliser les fonctions regex et preg_match
preg_match('/src="([^"]+)"/', $iframe_string, $match);
$url = $match[1];
UPDATEsi vous avez une page générée avec php ou en tant que HTML intégré dans un fichier php, vous pouvez utiliser des tampons pour extraire le langage HTML de PHP, puis utiliser regex dessus:
utilisez d'abord ob_start();
au début de votre code de page ou si vous avez du code HTML avant votre php, vous pouvez l'utiliser pour la page entière en ajoutant:
<?php ob_start(); ?>
et le début du fichier php, puis à la fin, vous pouvez obtenir ob buffer en chaîne et appliquer la 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;
?>
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 "";
}
<?php
function getHtmlElement($html,$startOfElement,$endOfElement)
{
$startingPosition = strpos($html, $startOfElement);
$endPosition = strpos($html, $endOfElement,$startingPosition);
$foundElement = substr($html, $startingPosition,$endPosition);
return $foundElement;
}
$html = file_get_contents('http://www.youtube.com/');
$startOfElement = '<div id="guide"';
$endOfElement = "<";
$myElement = getHtmlElement($html,$startOfElement,$endOfElement);
echo $myElement;
Je cherchais un moyen de prendre des éléments html de l'URL, mais je n'en ai pas trouvé, alors j'ai écrit ceci. une partie de la chaîne que vous voulez.
Mon code HTML est:
<div url="doctor.videoLink"><div class="media-youtube-video">
<iframe src="https://www.youtube.com/embed/YZvJZrfw5oo?rel=0&enablejsapi=1" frameborder="0" allowfullscreen="" id="widget2"></iframe>
</div>
</div>
Et je retrive src de iframe as:
foreach($kolPro->find('div.video div div iframe') as $youTube)
{
//$kolsData['you_tube']=$youTube->innertext();
preg_match('/src="([^"]+)"/', $youTube, $match);
$youtubeLink= $match[1];
}
<?php
$url = '<iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/VvJ037b_kLs" frameborder="0" allowfullscreen></iframe> ';
$tmpDoc = new DOMDocument();
# Dirty hack to support utf-8 with loadHTML
# http://php.net/manual/en/domdocument.loadhtml.php#95251
@$tmpDoc->loadHTML( '<?xml encoding="UTF-8">' . $url );
foreach ( $tmpDoc->childNodes as $item ) {
if ( $item->nodeType == XML_PI_NODE ) {
$tmpDoc->removeChild( $item );// remove hack
}
}
$tmpDoc->encoding = 'UTF-8'; // insert proper
$body = $tmpDoc->getElementsByTagName( 'body' );
if ( ! $body->length ) {
return null;
}
$nodes = $body->item( 0 )->childNodes;
if ( empty( $nodes ) ) {
return null;
}
echo $nodes->item( 0 )->getAttribute( 'src' );