如何使用preg_match php函数获取Dailymotion代码?

时间:2012-11-01 11:37:23

标签: php regex html-parsing preg-match

  

可能重复:
  How do I get the Video Id from the URL? (DailyMotion)

我有这个代码来获取视频的dailymotion缩略图:

<?php
    $url = get_the_content(); 
    if (preg_match('????????????', $url, $match)) {
        $video_id_dailymotion = $match[1];
    }
?>

<?php if($video_id_dailymotion): ?>
    <img class="video-thumbnail" src="http://dailymotion.com/thumbnail/video/<?php echo $video_id_dailymotion; ?>" alt="" width="190">
<?php endif; ?>

但需要帮助preg_match功能部分。我应该把它作为第一个参数而不是 ????????????

dailymotion视频的格式如:。

http://www.dailymotion.com/video/xulmeo_osama-bin-laden-for-dummies_shortfilms

顺便说一下。 $ url 变量包含其他内容,例如youtube对象代码,大量文本等等,有时只会嵌入dailymotion视频。

修改 对于youtube我使用的是这样的东西:

if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) {
    $video_id_youtube = $match[1];
}

它正在发挥作用,现在我需要类似于dailymotion的东西。

但我在正则表达式中非常糟糕,所以我需要一些帮助。

如果可能请详细解释,所以我可以改进我的问题,提前谢谢。

编辑2: 必须使用 preg_match 完成,并在正则表达式条件下使用dailymotion.com

编辑3: $ url中需要由preg_match处理的代码可能如下所示:

And here is the video <iframe src="http://www.dailymotion.com/embed/video/xsqxky" frameborder="0" width="480" height="270"></iframe>
What do you think? Let us know. Peace!

2 个答案:

答案 0 :(得分:4)

对于dailymotion,视频ID是第3个URL段的第一个字符串(在第一个_之前)。根据你的例子

www.dailymotion.com/video/的 xulmeo _osama斌载货换dummies_shortfilms

的视频ID为xulmeo。所以你需要做的就是在第一次出现下划线之前提取字符串

代码:

$slice=explode('/',$url);
$video_id_dailymotion=explode('_',$slice[2]);

或只是

$video_id_dailymotion=strtok(basename($url), '_');

参考
    explode
    strtok
    basename


修改:正如所指出的,每日运动链接可能有不同的显示方式。

  1. http://www.dailymotion.com/embed/video/xulmeo
  2. http://www.dailymotion.com/video/xulmeo_osama-bin-laden-for-dummies_shortfilms
  3. 对于案例2,请参阅前面的代码段,两种情况都使用此代码

    $slice=explode('/',$url);
    $video_id_dailymotion=(strlen($slice[2])==6?$slice[2]:explode('_',$slice[2]));
    // All dailymotion video id's are 6 in length
    

答案 1 :(得分:0)

首先使用HTML解析器提取所有链接。这将使您能够以首选的形式获得信息。

然后normalize all links根据基本规范,即RFC3986 Section 6

现在所有网址都采用可用于比较和分析的格式。例如,使用正则表达式。

对于这三个步骤,存在工具和答案:

  1. DOMDocumentDOMXPath - 请参阅How to parse and process HTML with PHP?
  2. Net_Url2 - 请参阅XPath Query & HTML - Find Specific HREF's Within Anchor Tags
  3. preg_match - 请参阅How do I get the Video Id from the URL? (DailyMotion)
  4. 通常希望你在提出问题之前做好功课,但我会把这个通用的程序留给你,以及那些“只是遇到问题”并且看不到木头的未来访客。