php 添加检查是否提供了错误的YouTube链接

ogsagwnx  于 2023-03-21  发布在  PHP
关注(0)|答案(1)|浏览(82)

我有一个函数可以将YouTube链接转换为嵌入格式
但是如果我指定了一个格式错误的链接,或者不是纯文本的链接,我就会得到一个错误
$youtube_id未定义

public function getYoutubeEmbedUrl()
    {
        $shortUrlRegex = '/youtu.be\/([a-zA-Z0-9_-]+)\??/i';
        $longUrlRegex = '/youtube.com\/((?:embed)|(?:watch))((?:\?v\=)|(?:\/))([a-zA-Z0-9_-]+)/i';
    
        if (preg_match($longUrlRegex, $this->video_link, $matches)) {
            $youtube_id = $matches[count($matches) - 1];
        }
    
        if (preg_match($shortUrlRegex, $this->video_link, $matches)) {
            $youtube_id = $matches[count($matches) - 1];
        }
        
        return 'https://www.youtube.com/embed/' . $youtube_id ;
   }

我试图添加验证功能,但我得到了同样的错误

if (!$youtube_id) {
  return null;
}
kr98yfug

kr98yfug1#

如果提供的输入与正则表达式不匹配,您可以添加一个else并在那里处理无效输入。例如,如果您想要return null

if (preg_match($longUrlRegex, $this->video_link, $matches)) {
    $youtube_id = $matches[count($matches) - 1];
} else if (preg_match($shortUrlRegex, $this->video_link, $matches)) {
    $youtube_id = $matches[count($matches) - 1];
} else {
    return null;
}

请注意,两个现有的if块现在与else if链接在一起,因此它们是互斥的,所以现在涵盖了所有三种可能的情况。

相关问题