首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从youtube url中获取youtube视频id的智能模板?

从youtube url中获取youtube视频id的智能模板?
EN

Stack Overflow用户
提问于 2013-08-17 07:16:20
回答 1查看 1.5K关注 0票数 0

我需要解析和获取youtube视频id从youtube url中的智能tpl文件。现在,我正在使用插件文件来实现这一点,使用php preg_match函数。但是我想使用Smarty正则表达式来解析,而不是上面的方法。

当我通过智能循环获得视频URL时,我无法在php中解析它并分配smarty。目前,我正在使用这段代码从plugin文件中获得视频id。

代码语言:javascript
复制
if ($videoURL) {            
if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $videoURL, $match)) {
     $video_id = $match[1];
    }

     if (false !== $video_id) {
       return $video_id;
     }
     return false;
}

我不知道如何将这个preg_match转换成智能。有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-18 01:47:21

你最好的选择是用插件(特别是改性剂。 )扩展Smarty。

您可以遵循这个讨论这里,找出从youtube URL中获取ID的最佳方法;实际上,使用regex来解释不同类型的URL是非常棘手的(因此,上面有大量的表达式)。

一个例子应该是这样的:

代码语言:javascript
复制
<?php 

function smarty_modifier_youtubeID($string) { 
    parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
    return $my_array_of_vars['v']; 
}

然后将上面的内容放在名为modifier.youtube.php的智能插件/目录中。然后继续在for循环中使用它(在模板文件中),如so {$value|youtubeID}

另一种选择,我觉得你在找你,就是做这样的事:

代码语言:javascript
复制
{$value|regex_replace:"/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/":'$1'} 

上面的URL将替换为视频ID (假设$value仅由一个youtube URL组成,没有其他数据,否则您将不得不修改表达式)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18286203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档