web-dev-qa-db-fra.com

Comment obtenir l'URL de l'iframe en utilisant PHP

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> 
16
user2466994

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;

?>
37
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 "";
}
3
Isaac Limón
<?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.

0
user3208692

Mon code HTML est:

  <div url="doctor.videoLink"><div class="media-youtube-video">
          <iframe src="https://www.youtube.com/embed/YZvJZrfw5oo?rel=0&amp;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];
                            }
0
Deepa MG
<?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' );
0
ecabuk