Форум программистов, компьютерный форум CyberForum.ru

Проверка введенного url адреса на корректность - C++

Восстановить пароль Регистрация
 
millworm
0 / 0 / 0
Регистрация: 27.04.2012
Сообщений: 74
28.02.2014, 17:58     Проверка введенного url адреса на корректность #1
Здравствуйте, требуется ваша помощь
не могли бы подсказать как организовать проверку введенного url адреса на корректность?
есть конечно вариант вбить эту строку как символьный массив и проверять по символьно протокол http или https но вот как быть дальше ума не приложу
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,603
Записей в блоге: 17
28.02.2014, 18:03     Проверка введенного url адреса на корректность #2
Ну не проще сразу проверить его сделав HTTP-запрос и проверить результат ?
millworm
0 / 0 / 0
Регистрация: 27.04.2012
Сообщений: 74
28.02.2014, 18:09  [ТС]     Проверка введенного url адреса на корректность #3
я так же сказал преподавателю, но ему так не надо
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,603
Записей в блоге: 17
28.02.2014, 18:37     Проверка введенного url адреса на корректность #4
Цитата Сообщение от millworm Посмотреть сообщение
есть конечно вариант вбить эту строку как символьный массив и проверять по символьно протокол http или https но вот как быть дальше ума не приложу
Тогда только так.
Нужно читать про URI/URL и на основе этого делать анализ.
Кроме http и https, к примеру, нужно не допускать кириллицу (и других не анси символов).
DrOffset
6449 / 3823 / 885
Регистрация: 30.01.2014
Сообщений: 6,618
28.02.2014, 19:32     Проверка введенного url адреса на корректность #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от millworm Посмотреть сообщение
не могли бы подсказать как организовать проверку введенного url адреса на корректность?
Ну например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string>
#include <boost/regex.hpp>
 
int main()
{
    try
    {
        boost::regex urlCheck("^((https?)|(ftp))://"                         // protocol
            "(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+"         // username
            "(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+)?"      // password
            "@)?(?#"                                                         // auth requires @
            ")((([a-z0-9]\\.|[a-z0-9][a-z0-9-]*[a-z0-9]\\.)*"                // domain segments AND
            "[a-z][a-z0-9-]*[a-z0-9]"                                        // top level domain  OR
            "|((\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])\\.){3}"
            "(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])"                     // IP address
            ")(:\\d+)?"                                                      // port
            ")(((\\/+([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)*" // path
            "(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)"      // query string
            "?)?)?"                                                          // path and query string optional
            "(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)?"       // fragment
            "$");
 
        std::string url;
        std::getline(std::cin, url);
 
        if(boost::regex_match(url, urlCheck))
        {
            std::cout << "URL is correct.\n";
        }
        else
        {
            std::cout << "URL is not correct.\n";
        }
    }
    catch(std::exception const & e)
    {
        std::cerr << e.what();
    }
}
Yandex
Объявления
28.02.2014, 19:32     Проверка введенного url адреса на корректность
Ответ Создать тему
Опции темы

Текущее время: 23:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru