Поиск части строки, которую пользователь отправил через POST - PullRequest
1 голос
/ 01 мая 2010

Мои пользователи могут отправлять ссылки с популярных файловых хостов, таких как 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 ]

1 голос
/ 01 мая 2010

В соответствии с php - regex имя_хоста вы хотите убедиться, что вы проверите для www. часть thurl как parse_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:";
}
1 голос
/ 01 мая 2010

Неважно, ребята, я использовал это:

$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:)

...