我不知道
从哪里开始。我添加了一个YouTube页面和显示YouTube页面。
我可以将YouTube链接插入我的MySQL。我的脚本仅在使用此部分时才有效: https://www.youtube.com/watch?v=[XXXXXXXXXXX]
我想插入YouTube的整个视频链接。
因为我使用的是YouTube的嵌入源,如果我插入YouTube链接脚本只需要显示视频ID,但整个链接仍然显示在MySQL中
<iframe width="560" height="315" src="//www.youtube.com/embed/'.$nbbb["youtube"].'" frameborder="0" allowfullscreen></iframe>
你可以使用简单的子字符串函数
$fullurl = fromdatabase//whatever that is your full url.
$videoid=substr($fullurl,-11);
echo"<iframe......" . $videoid . ".....";
这适用于所有最后 11 位数字作为 youtube 视频 ID 的字符串。
干杯
我想我理解的是你在 ?v= 之后输入数据库的 URL 的 XXXXXXX 部分。
在 PHP 中,您可以使用 strpos 和 substr 来执行此操作
首先,您要找到?v=
的位置
$YouTubeURL = 'https://www.youtube.com/watch?v=XXXXXXXXXXX';
$pos = strpos($YouTubeURL);
$pos + 3 //Add 3 to account for ?v=
下一页 以该长度切割它
$answer = substr($YouTubeURL, $pos);
这应该是你的答案,或者至少引导你去。如果您将其存储在数据库中,它将在当前脚本中正确显示。(如果这是您要做的。
您可以使用正则表达式。
这将适用于所有类型的YouTube网址:
- 子
- 域或无子域
- youtu.be 网址
- https & http
- /v/链接
/**
* get youtube video ID from URL
*
* @param string $url
* @return string Youtube video id or FALSE if none found.
*/
function youtube_id_from_url($url) {
$pattern =
'%^# Match any youtube URL
(?:https?://)? # Optional scheme. Either http or https
(?:www'.)? # Optional www subdomain
(?: # Group host alternatives
youtu'.be/ # Either youtu.be,
| youtube'.com # or youtube.com
(?: # Group path alternatives
/embed/ # Either /embed/
| /v/ # or /v/
| /watch'?v= # or /watch'?v=
) # End path alternatives.
) # End host alternatives.
(['w-]{10,12}) # Allow 10-12 for 11 char youtube id.
$%x'
;
$result = preg_match($pattern, $url, $matches);
if (false !== $result) {
return $matches[1];
}
return false;
}
echo youtube_id_from_url('https://www.youtube.com/watch?v=XXXXXXXXXXX'); # XXXXXXXXXXX