我试图添加一些功能到WordPress站点,做以下...的WordPress赶上第一图像与YouTube
- 检查张贴无论是第一图像或第一的YouTube嵌入
- 如果找到一个像第一个,然后返回它
- 如果它发现YouTube的嵌入第一则返回截图
我已经找到了几个对符合本条例草案,继承人线,但没有类似的例子WH在我使用至今...
function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Defines a default image
$first_img = "/images/default.jpg";
}
return $first_img;
}
这正常工作和正确返回后的第一个形象,我现在正在努力增加YouTube的funcitonality,我发现下面的代码片段在网上,但我我不知道如何在它添加到上面的功能..
preg_match('#https?://www\.youtube(?:\-nocookie)?\.com/embed/([A-Za-z0-9\-_]+)#', $markup, $matches);
}
// If we've found a YouTube video ID, create the thumbnail URL
if (isset($matches[1])) {
$youtube_thumbnail = 'http://img.youtube.com/vi/' . $matches[1] . '/0.jpg';
}
了一个多影像撷取Youtube影片拇指的逻辑,如果有两个在后可以稍后,现在我只是有帖子图像或YouTube嵌入。任何人都可以帮助结合这两个?
* 编辑 *
使用hakres很好的例子,并回答我用这之后...
function catch_image($content, $defaultImage = '/images/default.jpg')
{
$image = $defaultImage;
$found = strlen($content);
foreach (array(
'image' => array(
'regex' => '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i',
'mask' => '%s'
),
'youtube' => array(
'regex' => '#(?:https?(?:a|vh?)?://)?(?:www\.)? youtube(?:\-nocookie)?\.com/watch\?.*v=([A-Za-z0-9\-_]+)#',
'mask' => 'http://img.youtube.com/vi/%s/2.jpg'
),
) as $search)
{
extract($search);
if (preg_match($regex, $content, $matches, PREG_OFFSET_CAPTURE)
&& $matches[1][1] < $found
) {
list($image, $found) = $matches[1];
$image = sprintf($mask, $image);
}
}
return $image;
}
我稍微并且还修改了YouTube的正则表达式语句用于显示图像的掩码和一切正在工作。
但是我现在需要尝试添加这些以及....
'regex' => '#<object[^>]+>.+?https?://www\.youtube(?:\-nocookie)?\.com/[ve]/([A-Za-z0-9\-_]+).+?</object>#s',
'regex' => '#https?://www\.youtube(?:\-nocookie)?\.com/[ve]/([A-Za-z0-9\-_]+)#',
'regex' => '#https?://www\.youtube(?:\-nocookie)?\.com/embed/([A-Za-z0-9\-_]+)#',
'regex' => '#(?:https?(?:a|vh?)?://)?(?:www\.)?youtube(?:\-nocookie)?\.com/watch\?.*v=([A-Za-z0-9\-_]+)#',
'regex' => '#(?:https?(?:a|vh?)?://)?youtu\.be/([A-Za-z0-9\-_]+)#',
这则覆盖所有不同的方式YouTube视频可以嵌入
这真是太神奇了,它的确以一种简单的方式解释了我的头脑!我已经修改过它,并且应用了它,它工作正常。我已经更新了原始帖子,提供了另一个关于搜索YouTube视频的不同方式 – fightstarr20 2012-04-17 18:11:43
@ fightstarr20:您可以尝试创建一个youtube正则表达式,或者只是向该数组添加更多内容。 'youtube2','youtube3'等。 – hakre 2012-04-17 18:55:00
谢谢你,一切都按预期工作 – fightstarr20 2012-04-18 10:13:04