Проверка URL на валидность

Discussion in 'Песочница' started by newvol, 15 Sep 2015.

  1. newvol

    newvol New Member

    Joined:
    9 May 2015
    Messages:
    23
    Likes Received:
    3
    Reputations:
    0
    Подскажите чем проверить url на валидность,
    пример урл
    xxx.yyy.com
    xx1.yyy.com
    x1x.yyy.com
    1xx.yyy.com

    спасибо
     
  2. grimnir

    grimnir Members of Antichat

    Joined:
    23 Apr 2012
    Messages:
    1,114
    Likes Received:
    830
    Reputations:
    231
    _________________________
  3. waik

    waik Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    hesher likes this.
  4. pawguscko

    pawguscko New Member

    Joined:
    27 Dec 2015
    Messages:
    4
    Likes Received:
    3
    Reputations:
    0
    Для проверки url советую :

    filter_var($url,FILTER_VALIDATE_URL)

    В плане проверки русскоязычных доменов могу рекомендовать смотреть в сторону конвертации в IDN, т.е. к виду xn--af1bc.net тогда проблем с русским точно не будет. В стандартном наборе таких функций нет, только декодирование. Если есть возможность поставить соответствующий модуль PECL, то на мой взгляд это идеальное решение.
     
  5. xusanokaz

    xusanokaz New Member

    Joined:
    6 Jan 2016
    Messages:
    49
    Likes Received:
    1
    Reputations:
    0
    заходишь на reg* и проверяешь списком
     
  6. kosticun

    kosticun New Member

    Joined:
    10 Jan 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    В свое время тоже задавался этим вопросом, изучив кучу доков, написал вот такую регулярку, правда это C++ и boost, но сама регулярка может перебраться и на php

    // Регулярка для выбора основных составных url
    const boost::regex main_expression(
    // PROTO HOST PORT
    "^(\?:([^:/\?#]+)://)\?(\\w+[^/\?#:]*)(\?::(\\d+))\?"
    // PATH FILE PARAMS
    "(/\?(\?:[^\?#/]*/)*)\?([^\?#]*)\?(\\\?(.*))\?",
    boost::regbase::normal | boost::regbase::icase);
     
    #6 kosticun, 10 Jan 2016
    Last edited: 10 Jan 2016
  7. 0xrust

    0xrust New Member

    Joined:
    20 Apr 2013
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    прикольно, не знал

    можно вот таким режексом

    Code:
    REGEX_IPADDR = "((25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])"
    REGEX_DOMAIN = "([a-zA-Z0-9_-]{1,61}\.)+[a-zA-Z]{2,4}"
    REGEX_URL = "https?://(" + REGEX_IPADDR + "|" + REGEX_DOMAIN + ")"
     
  8. qoumir

    qoumir New Member

    Joined:
    12 Jan 2016
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
  9. Moysha1

    Moysha1 New Member

    Joined:
    15 Jan 2016
    Messages:
    7
    Likes Received:
    2
    Reputations:
    0