我有这个代码来获取视频的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!
答案 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), '_');
修改:正如所指出的,每日运动链接可能有不同的显示方式。
对于案例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。
现在所有网址都采用可用于比较和分析的格式。例如,使用正则表达式。
对于这三个步骤,存在工具和答案:
DOMDocument
和DOMXPath
- 请参阅How to parse and process HTML with PHP? Net_Url2
- 请参阅XPath Query & HTML - Find Specific HREF's Within Anchor Tags preg_match
- 请参阅How do I get the Video Id from the URL? (DailyMotion) 通常希望你在提出问题之前做好功课,但我会把这个通用的程序留给你,以及那些“只是遇到问题”并且看不到木头的未来访客。