MorbidEntree Posted September 28, 2015 Share Posted September 28, 2015 I'm looking to be able to validate a URL to make sure it has a tld in it (ex. http://example.com, instead of http://example). I know that I can use the following code to validate a URL, but it doesn't make sure that it has a tld, just that it has http/https/etc. if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) { die('Not a valid URL'); } (By the way, I am not very experienced in PHP, but I do know some basics) Quote Link to comment https://forums.phpfreaks.com/topic/298348-how-can-i-validate-a-url-to-make-sure-it-includes-a-tld/ Share on other sites More sharing options...
Jacques1 Posted September 28, 2015 Share Posted September 28, 2015 You mean a public TLD? Parse the URL and then check if the host ends with a public suffix. Quote Link to comment https://forums.phpfreaks.com/topic/298348-how-can-i-validate-a-url-to-make-sure-it-includes-a-tld/#findComment-1521741 Share on other sites More sharing options...
requinix Posted September 28, 2015 Share Posted September 28, 2015 ICANN/IANA also maintains a list of literally the top-level domains. Meaning it lists "uk" but not "co.uk". Doesn't include the IDN versions of the xn-- labels but that's not difficult to deal with in code. Keep in mind that "foo.bar" is a valid domain name - a user could put forward even the slightest bit of effort to circumvent any sort of general-purpose domain name verification you may put in place. Quote Link to comment https://forums.phpfreaks.com/topic/298348-how-can-i-validate-a-url-to-make-sure-it-includes-a-tld/#findComment-1521768 Share on other sites More sharing options...
QuickOldCar Posted September 28, 2015 Share Posted September 28, 2015 Want to check if is a protocol, contains a decimal point first, Parse the URL , then end explode it, do an in_array() check in your array of top and generic domains. I have my own list I made including decimal points with top,second and generic domains, didn't feel like editing it so are extra in the array. <?php $domains = array(".abogado",".ac",".ac.ae",".ac.cn",".academy",".accountants",".active",".actor",".ad",".ads",".adult",".ae",".aero",".af",".africa",".ag",".agency",".agent",".ah.cn",".ai",".airforce",".ak.us",".al",".al.us",".allfinanz",".alsace",".am",".amsterdam",".an",".android",".ao",".apartments",".app",".aq",".aquarelle",".ar",".ar.us",".arab",".archi",".architect",".army",".arpa",".art",".arts",".as",".asia",".associates",".at",".attorney",".au",".au.com",".auction",".audio",".auto",".autos",".aw",".ax",".axa",".az",".az.us",".b2b",".b2c",".b2m",".ba",".baby",".band",".bank",".bar",".barcelona",".bargains",".baseball",".basketball",".bayern",".bb",".bd",".be",".beauty",".beer",".berlin",".best",".bet",".bf",".bg",".bh",".bi",".bible",".bid",".bike",".bingo",".bio",".biz",".bj",".bj.cn",".bl",".black",".blackfriday",".blog",".bloomberg",".blue",".bm",".bmw",".bn",".bnpparibas",".bo",".boats",".boo",".book",".boutique",".box",".bq",".br",".br.com",".broadway",".broker",".brussels",".bs",".bt",".budapest",".build",".builders",".business",".buy",".buzz",".bv",".bw",".by",".bz",".bzh",".ca",".ca.us",".cab",".cafe",".cal",".cam",".camera",".camp",".cancerresearch",".capetown",".capital",".car",".caravan",".cards",".care",".career",".careers",".cars",".cartier",".casa",".cash",".casino",".cat",".catering",".cc",".cd",".center",".ceo",".cern",".cf",".cg",".ch",".channel",".charity",".chat",".cheap",".christmas",".chrome",".church",".ci",".citic",".city",".ck",".cl",".claims",".cleaning",".click",".clinic",".clothing",".cloud",".club",".cm",".cn",".cn.com",".co",".co.uk",".co.us",".coach",".codes",".coffee",".college",".cologne",".com",".com.ac",".com.au",".com.cn",".com.tw",".community",".company",".computer",".condos",".construction",".consulting",".contractors",".cooking",".cool",".coop",".corp",".corsica",".country",".coupon",".coupons",".cpa",".cq.cn",".cr",".credit",".creditcard",".cricket",".crs",".cruises",".ct.us",".cu",".cuisinella",".cv",".cw",".cx",".cy",".cymru",".cz",".dad",".dance",".data",".date",".dating",".day",".dc.us",".dds",".de",".de.com",".de.net",".de.us",".deal",".deals",".degree",".delivery",".democrat",".dental",".dentist",".desi",".design",".dev",".diamonds",".diet",".digital",".dir",".direct",".directory",".discount",".diy",".dj",".dk",".dk.org",".dm",".dnp",".do",".docs",".doctor",".dog",".domains",".doosan",".durban",".dot",".download",".dubai",".durban",".dvag",".dz",".earth",".eat",".ec",".eco",".edu",".edu.ac",".edu.af",".edu.cn",".education",".ee",".eg",".eh",".email",".emerck",".energy",".engineer",".engineering",".enterprises",".equipment",".er",".es",".estate",".esq",".et",".eu",".eu.com",".eu.org",".eurovision",".eus",".events",".everbank",".exchange",".expert",".exposed",".fail",".faith",".family",".fan",".fans",".farm",".fashion",".feedback",".fi",".film",".final",".finance",".financial",".firm",".firmdale",".fish",".fishing",".fit",".fitness",".fj",".fj.cn",".fk",".fl.us",".flights",".florist",".flowers",".flsmidth",".fly",".fm",".fo",".foo",".food",".football",".forsale",".forum",".foundation",".fr",".free",".frl",".frogans",".fun",".fund",".furniture",".futbol",".fyi",".ga",".ga.us",".gal",".gallery",".game",".games",".garden",".gay",".gb",".gb.com",".gb.net",".gbiz",".gd",".gd.cn",".ge",".gent",".gf",".gg",".ggee",".gh",".gi",".gift",".gifts",".gives",".gl",".glass",".gle",".global",".globo",".gm",".gmail",".gmbh",".gmo",".gmx",".gn",".gold",".golf",".google",".gop",".gov",".gov.ac",".gov.ae",".gov.cn",".gp",".gq",".gr",".graphics",".gratis",".green",".gripe",".group",".gs",".gs.cn",".gt",".gu",".guide",".guitars",".guru",".gw",".gx.cn",".gy",".gz.cn",".ha.cn",".hair",".hamburg",".haus",".hb.cn",".he.cn",".health",".healthcare",".help",".helsinki",".here",".hi.cn",".hi.us",".hiphop",".hiv",".hk",".hl.cn",".hm",".hn",".hn.cn",".hockey",".holdings",".holiday",".home",".homes",".horse",".hospital",".host",".hosting",".hot",".hotel",".house",".how",".hr",".ht",".hu",".hu.com",".ia.us",".ibm",".id",".id.us",".ie",".il",".il.us",".im",".immo",".immobilien",".in",".industries",".in.us",".inc",".indians",".industries",".info",".ing",".ink",".institute",".insurance",".insure",".int",".international",".investments",".io",".iq",".ir",".irish",".is",".it",".iwc",".je",".jetzt",".jl.cn",".jm",".jo",".jobs",".joburg",".jp",".js.cn",".juegos",".jx.cn",".kaufen",".kddi",".ke",".kg",".kh",".ki",".kids",".kim",".kitchen",".kiwi",".km",".kn",".koeln",".kp",".kr",".krd",".kred",".ks.us",".ku",".kw",".ky",".ky.us",".kyoto",".kz",".la",".la.us",".lacaixa",".land",".lat",".latino",".latrobe",".law",".lawyer",".lb",".lc",".lds",".lease",".legal",".lgbt",".li",".lidl",".life",".lighting",".limited",".limo",".link",".live",".living",".lk",".llc",".llp",".ln.cn",".loan",".loans",".lol",".london",".lotto",".love",".lr",".ls",".lt",".ltd",".ltda",".ltd.uk",".lu",".luxe",".luxury",".lv",".ly",".m2c",".m2m",".ma",".madrid",".maison",".mail",".management",".mango",".map",".market",".marketing",".ma.us",".mba",".mc",".md",".md.us",".me",".media",".medical",".meet",".melbourne",".meme",".memorial",".men",".menu",".me.uk",".me.us",".med",".mf",".mg",".mh",".miami",".mi.us",".mil",".mil.ac",".mil.ae",".mil.cn",".mini",".mk",".ml",".mm",".mn",".mo",".mo.us",".mobi",".mobile",".moda",".moe",".mom",".monash",".money",".mormon",".mortgage",".moscow",".moto",".motorcycles",".mov",".movie",".mp",".mq",".mr",".ms",".ms.us",".mt",".mt.us",".mu",".museum",".music",".mv",".mw",".mx",".my",".mz",".na",".nagoya",".name",".navy",".nc",".nc.us",".nd.us",".ne",".ne.us",".net",".network",".neustar",".net.ac",".net.ae",".net.cn",".net.tw",".net.uk",".new",".news",".nexus",".nf",".ng",".ngo",".nh.us",".nhk",".ni",".ninja",".nj.us",".nl",".nm.cn",".nm.us",".no",".no.com",".nom.ad",".now",".np",".nr",".nra",".nrw",".nu",".nv.us",".nx.cn",".ny.us",".nyc",".nz",".oh.us",".ok.us",".okinawa",".om",".one",".ong",".onl",".online",".ooo",".or.us",".org",".organic",".org.ac",".org.ae",".org.cn",".org.tw",".org.uk",".osaka",".otsuka",".ovh",".pa",".pa.us",".paris",".partners",".parts",".party",".pay",".pe",".pet",".pets",".pf",".pg",".ph",".phd",".pharmacy",".phone",".photo",".photography",".photos",".physio",".pics",".pictures",".pid",".ping",".pink",".pizza",".pk",".pl",".place",".play",".plc",".plc.uk",".plumbing",".plus",".pm",".pn",".pohl",".poker",".porn",".post",".pr",".praxi",".press",".pro",".pro.ae",".prod",".productions",".prof",".properties",".property",".ps",".pt",".pub",".pw",".py",".qa",".qc.com",".qh.cn",".qpon",".quebec",".racing",".radio",".re",".realestate",".realtor",".realty",".rec",".recipes",".red",".rehab",".reise",".reisen",".reit",".ren",".rent",".rentals",".repair",".report",".republican",".rest",".restaurant",".review",".reviews",".ri.us",".rich",".rio",".rip",".ro",".rocks",".rodeo",".rs",".rsvp",".ru",".ru.com",".rugby",".ruhr",".run",".rw",".ryukyu",".sa",".saarland",".sale",".salon",".samsung",".sarl",".save",".sa.com",".sb",".sc",".sca",".sc.cn",".sc.us",".scb",".sch.ae",".sch.uk",".schmidt",".school",".schule",".schwarz",".science",".scot",".sd",".sd.cn",".sd.us",".se",".se.com",".search",".services",".sew",".sexy",".sg",".sh",".sh.cn",".shiksha",".shoes",".shop",".shopping",".show",".shriram",".si",".singles",".site",".sj",".sk",".ski",".sl",".sm",".sn",".sn.cn",".so",".soc",".soccer",".social",".software",".sohu",".solar",".solutions",".soy",".spa",".space",".spiegel",".sport",".sports",".spot",".sr",".ss",".st",".store",".stream",".studio",".style",".su",".supplies",".supply",".support",".surf",".surgery",".suzuki",".sv",".swiss",".sx.cn",".sy",".sydney",".systems",".sz",".taipei",".tatar",".tattoo",".tax",".taxi",".tc",".td",".team",".tech",".technology",".tel",".tennis",".tf",".tg",".th",".thai",".theater",".tickets",".tienda",".tips",".tires",".tirol",".tj",".tj.cn",".tk",".tl",".tm",".tn",".tn.us",".to",".today",".tokyo",".tools",".top",".tour",".tours",".town",".toys",".tp",".tr",".trade",".trading",".training",".travel",".trust",".tt",".tube",".tui",".tv",".tw",".tw.cn",".tx.us",".tz",".ua",".ug",".uk",".uk.com",".uk.net",".um",".university",".uno",".uol",".us",".us.com",".ut.us",".uy",".uy.com",".uz",".va",".va.us",".vacations",".vc",".ve",".vegas",".ventures",".versicherung",".vet",".vg",".vi",".viajes",".video",".villas",".vision",".vin",".vip",".vision",".vlaanderen",".vn",".vodka",".vote",".voting",".voto",".voyage",".vt.us",".vu",".wa.us",".wales",".wang",".watch",".web",".webcam",".website",".wed",".wedding",".wf",".whoswho",".wi.us",".wien",".wiki",".williamhill",".win",".wine",".wme",".work",".works",".world",".wow",".ws",".wtc",".wtf",".测试",".परीक्षा",".佛山",".集团",".在线",".한국",".ভারত",".八卦",".موقع",".বাংলা",".公益",".公司",".移动",".我爱你",".москва",".испытание",".қаз",".онлайн",".сайт",".срб",".бел",".테스트",".орг",".삼성",".சிங்கப்பூர்",".商标",".商店",".商城",".дети",".мкд",".טעסט",".中文网",".中信",".中国",".中國",".谷歌",".భారత్",".ලංකා",".測試",".ભારત",".भारत",".آزمایشی",".பரிட்சை",".网店",".संगठन",".网络",".укр",".香港",".δοκιμή",".إختبار",".台湾",".台灣",".手机",".мон",".الجزائر",".عمان",".ایران",".امارات",".بازار",".پاکستان",".الاردن",".بھارت",".المغرب",".السعودية",".سودان",".عراق",".مليسيا",".شبكة",".გე",".机构",".组织机构",".ไทย",".سورية",".рус",".рф",".تونس",".みんな",".グーグル",".世界",".ਭਾਰਤ",".网址",".游戏",".vermögensberater",".vermögensberatung",".企业",".مصر",".قطر",".广东",".இலங்கை",".இந்தியா",".հայ",".新加坡",".فلسطين",".テスト",".政务",".wv.us",".wy.us",".xj.cn",".xxx",".xyz",".xz.cn",".yachts",".yandex",".ye",".yoga",".yokohama",".youtube",".yn.cn",".yt",".yu",".za",".za.com",".zip",".zj.cn",".zm",".zone",".zr",".zuerich",".zw"); function checkUrl($url, $domains) { $url = trim($url); if (parse_url($url, PHP_URL_SCHEME) && strpos($url, ".") !== false) { $suffix = end(explode(".", $url)); if (in_array(".$suffix", $domains)) { return true; } else { return false; } } else { return false; } } //usage $sample_urls = array( "http://phpfreaks.com", "phpfreaks.com", "http://phpfreaks.blah", "http://phpfreaks.com.blah" ); foreach ($sample_urls as $url) { if (checkUrl($url, $domains)) { echo "<p style='color:green;'> $url </p>"; } else { echo "<p style='color:red;'> $url </p>"; } } ?> Quote Link to comment https://forums.phpfreaks.com/topic/298348-how-can-i-validate-a-url-to-make-sure-it-includes-a-tld/#findComment-1521771 Share on other sites More sharing options...
lush_rainforest Posted September 28, 2015 Share Posted September 28, 2015 (edited) Want to check if is a protocol, contains a decimal point first, Parse the URL , then end explode it, do an in_array() check in your array of top and generic domains. I have my own list I made including decimal points with top,second and generic domains, didn't feel like editing it so are extra in the array. <?php $domains = array(".abogado",".ac",".ac.ae",".ac.cn",".academy",".accountants",".active",".actor",".ad",".ads",".adult",".ae",".aero",".af",".africa",".ag",".agency",".agent",".ah.cn",".ai",".airforce",".ak.us",".al",".al.us",".allfinanz",".alsace",".am",".amsterdam",".an",".android",".ao",".apartments",".app",".aq",".aquarelle",".ar",".ar.us",".arab",".archi",".architect",".army",".arpa",".art",".arts",".as",".asia",".associates",".at",".attorney",".au",".au.com",".auction",".audio",".auto",".autos",".aw",".ax",".axa",".az",".az.us",".b2b",".b2c",".b2m",".ba",".baby",".band",".bank",".bar",".barcelona",".bargains",".baseball",".basketball",".bayern",".bb",".bd",".be",".beauty",".beer",".berlin",".best",".bet",".bf",".bg",".bh",".bi",".bible",".bid",".bike",".bingo",".bio",".biz",".bj",".bj.cn",".bl",".black",".blackfriday",".blog",".bloomberg",".blue",".bm",".bmw",".bn",".bnpparibas",".bo",".boats",".boo",".book",".boutique",".box",".bq",".br",".br.com",".broadway",".broker",".brussels",".bs",".bt",".budapest",".build",".builders",".business",".buy",".buzz",".bv",".bw",".by",".bz",".bzh",".ca",".ca.us",".cab",".cafe",".cal",".cam",".camera",".camp",".cancerresearch",".capetown",".capital",".car",".caravan",".cards",".care",".career",".careers",".cars",".cartier",".casa",".cash",".casino",".cat",".catering",".cc",".cd",".center",".ceo",".cern",".cf",".cg",".ch",".channel",".charity",".chat",".cheap",".christmas",".chrome",".church",".ci",".citic",".city",".ck",".cl",".claims",".cleaning",".click",".clinic",".clothing",".cloud",".club",".cm",".cn",".cn.com",".co",".co.uk",".co.us",".coach",".codes",".coffee",".college",".cologne",".com",".com.ac",".com.au",".com.cn",".com.tw",".community",".company",".computer",".condos",".construction",".consulting",".contractors",".cooking",".cool",".coop",".corp",".corsica",".country",".coupon",".coupons",".cpa",".cq.cn",".cr",".credit",".creditcard",".cricket",".crs",".cruises",".ct.us",".cu",".cuisinella",".cv",".cw",".cx",".cy",".cymru",".cz",".dad",".dance",".data",".date",".dating",".day",".dc.us",".dds",".de",".de.com",".de.net",".de.us",".deal",".deals",".degree",".delivery",".democrat",".dental",".dentist",".desi",".design",".dev",".diamonds",".diet",".digital",".dir",".direct",".directory",".discount",".diy",".dj",".dk",".dk.org",".dm",".dnp",".do",".docs",".doctor",".dog",".domains",".doosan",".durban",".dot",".download",".dubai",".durban",".dvag",".dz",".earth",".eat",".ec",".eco",".edu",".edu.ac",".edu.af",".edu.cn",".education",".ee",".eg",".eh",".email",".emerck",".energy",".engineer",".engineering",".enterprises",".equipment",".er",".es",".estate",".esq",".et",".eu",".eu.com",".eu.org",".eurovision",".eus",".events",".everbank",".exchange",".expert",".exposed",".fail",".faith",".family",".fan",".fans",".farm",".fashion",".feedback",".fi",".film",".final",".finance",".financial",".firm",".firmdale",".fish",".fishing",".fit",".fitness",".fj",".fj.cn",".fk",".fl.us",".flights",".florist",".flowers",".flsmidth",".fly",".fm",".fo",".foo",".food",".football",".forsale",".forum",".foundation",".fr",".free",".frl",".frogans",".fun",".fund",".furniture",".futbol",".fyi",".ga",".ga.us",".gal",".gallery",".game",".games",".garden",".gay",".gb",".gb.com",".gb.net",".gbiz",".gd",".gd.cn",".ge",".gent",".gf",".gg",".ggee",".gh",".gi",".gift",".gifts",".gives",".gl",".glass",".gle",".global",".globo",".gm",".gmail",".gmbh",".gmo",".gmx",".gn",".gold",".golf",".google",".gop",".gov",".gov.ac",".gov.ae",".gov.cn",".gp",".gq",".gr",".graphics",".gratis",".green",".gripe",".group",".gs",".gs.cn",".gt",".gu",".guide",".guitars",".guru",".gw",".gx.cn",".gy",".gz.cn",".ha.cn",".hair",".hamburg",".haus",".hb.cn",".he.cn",".health",".healthcare",".help",".helsinki",".here",".hi.cn",".hi.us",".hiphop",".hiv",".hk",".hl.cn",".hm",".hn",".hn.cn",".hockey",".holdings",".holiday",".home",".homes",".horse",".hospital",".host",".hosting",".hot",".hotel",".house",".how",".hr",".ht",".hu",".hu.com",".ia.us",".ibm",".id",".id.us",".ie",".il",".il.us",".im",".immo",".immobilien",".in",".industries",".in.us",".inc",".indians",".industries",".info",".ing",".ink",".institute",".insurance",".insure",".int",".international",".investments",".io",".iq",".ir",".irish",".is",".it",".iwc",".je",".jetzt",".jl.cn",".jm",".jo",".jobs",".joburg",".jp",".js.cn",".juegos",".jx.cn",".kaufen",".kddi",".ke",".kg",".kh",".ki",".kids",".kim",".kitchen",".kiwi",".km",".kn",".koeln",".kp",".kr",".krd",".kred",".ks.us",".ku",".kw",".ky",".ky.us",".kyoto",".kz",".la",".la.us",".lacaixa",".land",".lat",".latino",".latrobe",".law",".lawyer",".lb",".lc",".lds",".lease",".legal",".lgbt",".li",".lidl",".life",".lighting",".limited",".limo",".link",".live",".living",".lk",".llc",".llp",".ln.cn",".loan",".loans",".lol",".london",".lotto",".love",".lr",".ls",".lt",".ltd",".ltda",".ltd.uk",".lu",".luxe",".luxury",".lv",".ly",".m2c",".m2m",".ma",".madrid",".maison",".mail",".management",".mango",".map",".market",".marketing",".ma.us",".mba",".mc",".md",".md.us",".me",".media",".medical",".meet",".melbourne",".meme",".memorial",".men",".menu",".me.uk",".me.us",".med",".mf",".mg",".mh",".miami",".mi.us",".mil",".mil.ac",".mil.ae",".mil.cn",".mini",".mk",".ml",".mm",".mn",".mo",".mo.us",".mobi",".mobile",".moda",".moe",".mom",".monash",".money",".mormon",".mortgage",".moscow",".moto",".motorcycles",".mov",".movie",".mp",".mq",".mr",".ms",".ms.us",".mt",".mt.us",".mu",".museum",".music",".mv",".mw",".mx",".my",".mz",".na",".nagoya",".name",".navy",".nc",".nc.us",".nd.us",".ne",".ne.us",".net",".network",".neustar",".net.ac",".net.ae",".net.cn",".net.tw",".net.uk",".new",".news",".nexus",".nf",".ng",".ngo",".nh.us",".nhk",".ni",".ninja",".nj.us",".nl",".nm.cn",".nm.us",".no",".no.com",".nom.ad",".now",".np",".nr",".nra",".nrw",".nu",".nv.us",".nx.cn",".ny.us",".nyc",".nz",".oh.us",".ok.us",".okinawa",".om",".one",".ong",".onl",".online",".ooo",".or.us",".org",".organic",".org.ac",".org.ae",".org.cn",".org.tw",".org.uk",".osaka",".otsuka",".ovh",".pa",".pa.us",".paris",".partners",".parts",".party",".pay",".pe",".pet",".pets",".pf",".pg",".ph",".phd",".pharmacy",".phone",".photo",".photography",".photos",".physio",".pics",".pictures",".pid",".ping",".pink",".pizza",".pk",".pl",".place",".play",".plc",".plc.uk",".plumbing",".plus",".pm",".pn",".pohl",".poker",".porn",".post",".pr",".praxi",".press",".pro",".pro.ae",".prod",".productions",".prof",".properties",".property",".ps",".pt",".pub",".pw",".py",".qa",".qc.com",".qh.cn",".qpon",".quebec",".racing",".radio",".re",".realestate",".realtor",".realty",".rec",".recipes",".red",".rehab",".reise",".reisen",".reit",".ren",".rent",".rentals",".repair",".report",".republican",".rest",".restaurant",".review",".reviews",".ri.us",".rich",".rio",".rip",".ro",".rocks",".rodeo",".rs",".rsvp",".ru",".ru.com",".rugby",".ruhr",".run",".rw",".ryukyu",".sa",".saarland",".sale",".salon",".samsung",".sarl",".save",".sa.com",".sb",".sc",".sca",".sc.cn",".sc.us",".scb",".sch.ae",".sch.uk",".schmidt",".school",".schule",".schwarz",".science",".scot",".sd",".sd.cn",".sd.us",".se",".se.com",".search",".services",".sew",".sexy",".sg",".sh",".sh.cn",".shiksha",".shoes",".shop",".shopping",".show",".shriram",".si",".singles",".site",".sj",".sk",".ski",".sl",".sm",".sn",".sn.cn",".so",".soc",".soccer",".social",".software",".sohu",".solar",".solutions",".soy",".spa",".space",".spiegel",".sport",".sports",".spot",".sr",".ss",".st",".store",".stream",".studio",".style",".su",".supplies",".supply",".support",".surf",".surgery",".suzuki",".sv",".swiss",".sx.cn",".sy",".sydney",".systems",".sz",".taipei",".tatar",".tattoo",".tax",".taxi",".tc",".td",".team",".tech",".technology",".tel",".tennis",".tf",".tg",".th",".thai",".theater",".tickets",".tienda",".tips",".tires",".tirol",".tj",".tj.cn",".tk",".tl",".tm",".tn",".tn.us",".to",".today",".tokyo",".tools",".top",".tour",".tours",".town",".toys",".tp",".tr",".trade",".trading",".training",".travel",".trust",".tt",".tube",".tui",".tv",".tw",".tw.cn",".tx.us",".tz",".ua",".ug",".uk",".uk.com",".uk.net",".um",".university",".uno",".uol",".us",".us.com",".ut.us",".uy",".uy.com",".uz",".va",".va.us",".vacations",".vc",".ve",".vegas",".ventures",".versicherung",".vet",".vg",".vi",".viajes",".video",".villas",".vision",".vin",".vip",".vision",".vlaanderen",".vn",".vodka",".vote",".voting",".voto",".voyage",".vt.us",".vu",".wa.us",".wales",".wang",".watch",".web",".webcam",".website",".wed",".wedding",".wf",".whoswho",".wi.us",".wien",".wiki",".williamhill",".win",".wine",".wme",".work",".works",".world",".wow",".ws",".wtc",".wtf",".测试",".परीक्षा",".佛山",".集团",".在线",".한국",".ভারত",".八卦",".موقع",".বাংলা",".公益",".公司",".移动",".我爱你",".москва",".испытание",".қаз",".онлайн",".сайт",".срб",".бел",".테스트",".орг",".삼성",".சிங்கப்பூர்",".商标",".商店",".商城",".дети",".мкд",".טעסט",".中文网",".中信",".中国",".中國",".谷歌",".భారత్",".ලංකා",".測試",".ભારત",".भारत",".آزمایشی",".பரிட்சை",".网店",".संगठन",".网络",".укр",".香港",".δοκιμή",".إختبار",".台湾",".台灣",".手机",".мон",".الجزائر",".عمان",".ایران",".امارات",".بازار",".پاکستان",".الاردن",".بھارت",".المغرب",".السعودية",".سودان",".عراق",".مليسيا",".شبكة",".გე",".机构",".组织机构",".ไทย",".سورية",".рус",".рф",".تونس",".みんな",".グーグル",".世界",".ਭਾਰਤ",".网址",".游戏",".vermögensberater",".vermögensberatung",".企业",".مصر",".قطر",".广东",".இலங்கை",".இந்தியா",".հայ",".新加坡",".فلسطين",".テスト",".政务",".wv.us",".wy.us",".xj.cn",".xxx",".xyz",".xz.cn",".yachts",".yandex",".ye",".yoga",".yokohama",".youtube",".yn.cn",".yt",".yu",".za",".za.com",".zip",".zj.cn",".zm",".zone",".zr",".zuerich",".zw"); function checkUrl($url, $domains) { $url = trim($url); if (parse_url($url, PHP_URL_SCHEME) && strpos($url, ".") !== false) { $suffix = end(explode(".", $url)); if (in_array(".$suffix", $domains)) { return true; } else { return false; } } else { return false; } } //usage $sample_urls = array( "http://phpfreaks.com", "phpfreaks.com", "http://phpfreaks.blah", "http://phpfreaks.com.blah" ); foreach ($sample_urls as $url) { if (checkUrl($url, $domains)) { echo "<p style='color:green;'> $url </p>"; } else { echo "<p style='color:red;'> $url </p>"; } } ?> I really love the idea. However it looks like this code will produce an error. I am thinking it's because you might have to use end and explode on seperate lines. Like $suffix = explode(".", $url); $suffix = end($suffix); I have no idea why this happens, but it just does. Edited September 28, 2015 by lush_rainforest Quote Link to comment https://forums.phpfreaks.com/topic/298348-how-can-i-validate-a-url-to-make-sure-it-includes-a-tld/#findComment-1521795 Share on other sites More sharing options...
requinix Posted September 28, 2015 Share Posted September 28, 2015 I have no idea why this happens, but it just does.It's because end() wants to modify internal information about an array, so it needs to be passed a variable and by reference. If the function returned an array by reference, that would work too. A combination of strrpos and substr will work for a one-liner too. Quote Link to comment https://forums.phpfreaks.com/topic/298348-how-can-i-validate-a-url-to-make-sure-it-includes-a-tld/#findComment-1521802 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.