查找用户通过POST发送的字符串的一部分

时间:2010-05-01 17:17:31

标签: php url post switch-statement

我的用户可以从流行的文件主机发送链接,如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声明。

有没有人有解决这个问题的方法?

如果你需要我解释更多我可以尝试,英语不是我的母语,所以它有点难。

谢谢大家。

2 个答案:

答案 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:";
}