WordPress如何让您通过url嵌入youtube/dailymotion/vimeo视频?例如,如果您输入[youtube = http://www.youtube.com/watch?v = cXXm696UbKY],视频就会出现在那里。 反正有没有在php中使用markdown安全地做到这一点?允许将视频嵌入评论/文字
0
A
回答
2
大多数(所有?)的这些视频平台都提供了oEmbed支持。
例如对于YouTube视频http://www.youtube.com/watch?v=cXXm696UbKY
它是http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch%3Fv%cXXm696UbKY
。
这将返回一个您可以用json_decode
轻松解析的响应。
{
"provider_url": "http:\/\/www.youtube.com\/",
"title": "Auto-Tune the News #8: dragons. geese. Michael Vick. (ft. T-Pain)",
"html": "<object width=\"425\" height=\"344\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/bDOYN-6gdRE?fs=1\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><embed src=\"http:\/\/www.youtube.com\/v\/bDOYN-6gdRE?fs=1\" type=\"application\/x-shockwave-flash\" width=\"425\" height=\"344\" allowscriptaccess=\"always\" allowfullscreen=\"true\"><\/embed><\/object>",
"author_name": "schmoyoho",
"height": 344,
"thumbnail_width": 480,
"width": 425,
"version": "1.0",
"author_url": "http:\/\/www.youtube.com\/user\/schmoyoho",
"provider_name": "YouTube",
"thumbnail_url": "http:\/\/i3.ytimg.com\/vi\/bDOYN-6gdRE\/hqdefault.jpg",
"type": "video",
"thumbnail_height": 360
}
有趣的部分是html
属性。
因此,我们所要做的就是搜索[YouTube=...]
标签的文本,提取YouTube网址并通过oEmbed检索嵌入代码。
这里工作的例子:
<?php
function getYouTubeCode($url)
{
$oembedUrl = 'http://www.youtube.com/oembed?url=' . urlencode($url);
// The @-operator suppresses errors if the YouTube oEmbed service can't handle our request
$data = @file_get_contents($oembedUrl);
// If $data contains invalid JSON code, it will return null
$data = json_decode($data);
// So if $data is not an object now, we abort
if (!is_object($data)) {
return '';
}
// Otherwise we return the YouTube embed code
return $data->html;
}
$text = '<h1>Hi There</h1><p>You gotta watch this video:</p><p>[YouTube=http://www.youtube.com/watch?v=cXXm696UbKY]</p>';
$matches = array();
// We scan the $text variable for all occurrences of "[YouTube=<Any character except right squared bracket>]"
if (preg_match_all('/\[YouTube=([^\]]+)\]/i', $text, $matches, PREG_SET_ORDER)) {
foreach ($matches as $match) {
// Eg. $match[0] is "[YouTube=http://www.youtube.com/watch?v=cXXm696UbKY]"
// and $match[1] is "http://www.youtube.com/watch?v=cXXm696UbKY"
$text = str_replace($match[0], getYouTubeCode($match[1]), $text);
}
}
echo $text;
1
我真的不知道WordPress的问题,但基本的逻辑是搜索网址,并将其转换为Youtube嵌入代码,添加它周围的东西!我认为preg_replace()
是你必须牢记的!
相关问题
- 1. 允许用户发布内嵌评论
- 2. CKEditor:允许视频嵌入代码
- 3. 只允许视频嵌入代码(Rails)
- 4. Jsoup WhiteList允许评论
- 5. php strip_tags允许评论
- 6. 在Facebook评论或墙上嵌入视频
- 7. 在评论或消息中嵌入youtube或vimeo视频,如Facebook
- 8. 如何从Facebook的评论插件获取嵌入视频?
- 9. 如何从Facebook的评论框中获取嵌入视频?
- 10. 将评论添加到youtube视频
- 11. 访问视频评论
- 12. Facebook的评论不允许发表匿名评论
- 13. 使用Django时出现“评论帖子不允许(400)”评论
- 14. Wordpress,允许评论者编辑自己的评论?
- 15. 只允许评论的所有者删除他们的评论
- 16. 评论模块:允许匿名用户回复评论
- 17. VBScript,HTA - INI分析,允许内嵌评论
- 18. 的Drupal允许匿名评论
- 19. Oracle:更新只允许评论
- 20. 允许在播放JSON评论
- 21. wordpress只允许添加评论
- 22. Wordpress wp_new_comment允许多条评论
- 23. Youtube嵌入的视频允许由管理员更改
- 24. 在Django/Python中允许嵌入视频的方法是什么?
- 25. 嵌入wmv视频不允许全屏按钮
- 26. 如何允许用户嵌入YouTube和Vimeo视频?
- 27. 检查,是否允许嵌入(YouTube视频)PHP,新的YouTube API
- 28. 检查是否允许使用jQuery视频嵌入
- 29. 允许用户嵌入视频的主要安全问题
- 30. 评论评论标记(嵌套评论)
是错在爱上一个答案? – jonnnnnnnnnie 2010-12-05 00:45:55