我有一个函数可以将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;
}
1条答案
按热度按时间kr98yfug1#
如果提供的输入与正则表达式不匹配,您可以添加一个
else
并在那里处理无效输入。例如,如果您想要return null
:请注意,两个现有的
if
块现在与else if
链接在一起,因此它们是互斥的,所以现在涵盖了所有三种可能的情况。