【问题标题】:Finding part of a string that a user has sent via POST查找用户通过 POST 发送的字符串的一部分
【发布时间】:2010-05-01 17:17:30
【问题描述】:

我的用户可以从 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 语句。

有没有人可以解决这个问题?

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

谢谢大家。

【问题讨论】:

    标签: php url post switch-statement


    【解决方案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 :)

    【讨论】:

    • 查看我的帖子,了解确保解析出 www。可以从 parse_url 返回。
    【解决方案2】:

    根据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:";
    }
    

    【讨论】:

    • 谢谢,没有考虑 www 部分 :)
    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多