我的用户可以从流行的文件主机发送链接,如Rapidshare,Megaupload,Hotfile和FileFactory。我需要以某种方式找出他们发送链接的文件主机并正确使用正确的类。
例如,如果我在网页上的表单中发送Rapidshare链接,我需要以某种方式遍历我允许的每个文件主机,直到找到文本rapidshare.com
,然后我知道用户已发布Rapidshare链接。
也许是一个PHP示例:
switch($_POST['link'])
{
case strstr($_POST['link'], 'rapidshare.com'):
// the link is a Rapidshare one
break;
case strstr($_POST['link'], 'megaupload.com'):
// the link is a Megaupload one
break;
case strstr($_POST['link'], 'hotfile.com'):
// the link is a Hotfile one
break;
case strstr($_POST['link'], 'filefactory.com'):
// the link is a Filefactory one
break;
}
但是,我知道这是不正确的,如果我可以提供帮助,我宁愿不使用庞大的IF声明。
有没有人有解决这个问题的方法?
如果你需要我解释更多我可以尝试,英语不是我的母语,所以它有点难。
谢谢大家。
答案 0 :(得分:1)
没关系,我用过这个:
$sentLink = trim($_POST['link']);
$host = parse_url($sentLink, PHP_URL_HOST);
switch($host)
{
case 'rapidshare.com':
echo "RS";
break;
case 'megaupload.com':
echo "MU";
break;
case 'hotfile.com':
echo "HF";
break;
case 'filefactory.com':
echo "FF";
break;
default:
echo "WTF! D:";
}
我第一次听说parse_url
:)
答案 1 :(得分:1)
根据php - regex hostname extraction,您要确保检查www。作为parse_url的url部分有时也会返回。
$sentLink = trim($_POST['link']);
$host = array_shift( explode( '.', str_replace('www.', '', parse_url( $sentLink , PHP_URL_HOST )) ) );
switch($host)
{
case 'rapidshare.com':
echo "RS";
break;
case 'megaupload.com':
echo "MU";
break;
case 'hotfile.com':
echo "HF";
break;
case 'filefactory.com':
echo "FF";
break;
default:
echo "WTF! D:";
}