Нахождение части строки, которую пользователь отправил по почте

Мои пользователи могут отправить ссылки от популярных хостов файла как Rapidshare, Мегазагрузка, Hotfile и FileFactory. Я должен так или иначе узнать, от какого filehost они отправили ссылку, и используйте корректный класс для него соответственно.

Например, если бы я отправил ссылку 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, если я могу помочь ему.

У кого-либо есть какое-либо решение этой проблемы?

При необходимости во мне для объяснения больше, что я могу попробовать, английский язык не является моим родным языком, таким образом, это довольно твердо.

Спасибо все.

1
задан blerh 1 May 2010 в 17:17
поделиться

2 ответа

Согласно извлечение имени хоста php - regex вы хотите убедиться, что вы проверяете www. часть eurl как 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
ответ дан 3 September 2019 в 00:54
поделиться

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

$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
ответ дан 3 September 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: