Php 从smarty模板中的youtube url获取youtube视频id?
我需要从smarty tpl文件中的youtube url解析并获取youtube视频id。现在,我使用插件文件来实现这一点,使用php preg_match函数。但是我想使用Smarty正则表达式来解析,而不是使用上面的方法Php 从smarty模板中的youtube url获取youtube视频id?,php,regex,preg-match,smarty,smarty2,Php,Regex,Preg Match,Smarty,Smarty2,我需要从smarty tpl文件中的youtube url解析并获取youtube视频id。现在,我使用插件文件来实现这一点,使用php preg_match函数。但是我想使用Smarty正则表达式来解析,而不是使用上面的方法 由于我通过smarty循环获取视频URL,所以我无法在php中解析它并在smarty中分配。目前我正在使用这段代码从smarty的PHP插件文件中获取视频id if ($videoURL) { if (preg_match('%(?:youtube
由于我通过smarty循环获取视频URL,所以我无法在php中解析它并在smarty中分配。目前我正在使用这段代码从smarty的PHP插件文件中获取视频id
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
转换为smarty。有人能帮我解决这个问题吗?您最好的选择是使用插件扩展Smarty,特别是
您可以按照此讨论找出从youtube URL获取ID的最佳方法;事实上,仅使用正则表达式来解释不同类型的URL是相当棘手的(因此,上面有一个巨大的表达式)
例如:
<?php
function smarty_modifier_youtubeID($string) {
parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
return $my_array_of_vars['v'];
}
以上内容将用视频ID替换URL(假设$value仅由youtube URL组成,没有其他数据,否则您将不得不修改表达式。)您的最佳选择是使用插件扩展Smarty,特别是 您可以按照此讨论找出从youtube URL获取ID的最佳方法;事实上,仅使用正则表达式来解释不同类型的URL是相当棘手的(因此,上面有一个巨大的表达式) 例如:
<?php
function smarty_modifier_youtubeID($string) {
parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
return $my_array_of_vars['v'];
}
以上内容将用视频ID替换URL(假设$value仅由youtube URL组成,没有其他数据,否则您将不得不修改表达式。)Smarty只是用于输出数据,而不是用于处理数据。我知道。但有时我们必须在smarty循环中处理数据。我们还可以使用smarty修饰符,如
regex\u replace
或类似的东西来实现这一点。但我真的不擅长正则表达式。你能展示一下你已经尝试过的,解释一下为什么它不能满足你的要求吗?“我不能用php解析它,也不能用smarty赋值。”为什么不能?smarty只是用于输出数据,而不是处理数据。我知道。但有时我们必须在smarty循环中处理数据。我们还可以使用smarty修饰符,如regex\u replace
或类似的东西来实现这一点。但我真的不擅长正则表达式。你能展示一下你已经尝试过的,并解释为什么它不能满足你的要求吗?“我不能用php解析它,也不能用smarty赋值。”为什么不能?