我在课堂上有这个功能:
protected $supportedWebsitesUrls = ['www.youtube.com', 'www.vimeo.com', 'www.dailymotion.com'];
protected function isValid($videoUrl)
{
$urlDetails = parse_url($videoUrl);
if (in_array($urlDetails['host'], $this->supportedWebsitesUrls))
{
return true;
} else {
throw new \Exception('This website is not supported yet!');
return false;
}
}
它基本上从任意随机URL中提取主机名,然后检查它是否在$supportedWebsitesUrls
数组中,以确保它来自支持的网站。但是如果我添加说:dailymotion.com
而不是www.dailymotion.com
,它就不会检测到该网址。此外,如果我尝试做WWW.DAILYMOTION.COM,它仍然无法工作。可以做些什么?请帮我。
答案 0 :(得分:3)
您可以使用preg_grep function。 preg_grep
支持针对给定数组的正则表达式匹配。
使用示例:
$supportedWebsitesUrls = array('www.dailymotion.com', 'www.youtube.com', 'www.vimeo.com');
$s = 'DAILYMOTION.COM';
if ( empty(preg_grep('/' . preg_quote($s, '/') . '/i', $supportedWebsitesUrls)) )
echo 'This website is not supported yet!\n';
else
echo "found a match\n";
<强>输出:强>
found a match
答案 1 :(得分:1)
你可以对它进行一些检查;
对于小写vs大写,php函数strtolower()
会将你排除在外。
至于在开头与 www。进行核对与没有它的情况下,您可以对if子句添加额外的检查;
if (in_array($urlDetails['host'], $this->supportedWebsitesUrls) || in_array('www.'.$urlDetails['host'], $this->supportedWebsitesUrls))