Why is filter_var with FILTER_VALIDATE_URL showing this string as a valid URL?










-2















The input string is:



https://lh


however, with:



var_dump(filter_var('https://lh', FILTER_VALIDATE_URL)) // string(10) "https://lh"


for some reason the above string is classed as a valid URL. I have read another SO post saying that FILTER_VALIDATE_URL is not restricted to the http protocol but surely the above link is not a valid URL for any protocol.



Why is this happening?










share|improve this question



















  • 4





    That is, in fact, a valid URL.

    – Paul
    Nov 15 '18 at 22:46











  • Whats your problem with this url? Is it because, it's only a tld?

    – Philipp
    Nov 15 '18 at 22:51







  • 2





    What makes a URL valid is whether or not it is accordance with the spec, rfc 3986 (though I believe FILTER_VALIDATE_URL still uses the older rfc 2396, the differences are irrelevant here.)

    – Paul
    Nov 15 '18 at 23:19







  • 2





    Try calling parse_url() and performing additional validation steps on the individual pieces. Be warned: You seem to have quite a few incorrect assumptions about what valid URLs and hostnames can look like.

    – Sammitch
    Nov 16 '18 at 0:05







  • 1





    @FunkFortyNiner as others have stated, a valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc ...

    – ivanivan
    Nov 16 '18 at 2:13















-2















The input string is:



https://lh


however, with:



var_dump(filter_var('https://lh', FILTER_VALIDATE_URL)) // string(10) "https://lh"


for some reason the above string is classed as a valid URL. I have read another SO post saying that FILTER_VALIDATE_URL is not restricted to the http protocol but surely the above link is not a valid URL for any protocol.



Why is this happening?










share|improve this question



















  • 4





    That is, in fact, a valid URL.

    – Paul
    Nov 15 '18 at 22:46











  • Whats your problem with this url? Is it because, it's only a tld?

    – Philipp
    Nov 15 '18 at 22:51







  • 2





    What makes a URL valid is whether or not it is accordance with the spec, rfc 3986 (though I believe FILTER_VALIDATE_URL still uses the older rfc 2396, the differences are irrelevant here.)

    – Paul
    Nov 15 '18 at 23:19







  • 2





    Try calling parse_url() and performing additional validation steps on the individual pieces. Be warned: You seem to have quite a few incorrect assumptions about what valid URLs and hostnames can look like.

    – Sammitch
    Nov 16 '18 at 0:05







  • 1





    @FunkFortyNiner as others have stated, a valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc ...

    – ivanivan
    Nov 16 '18 at 2:13













-2












-2








-2


2






The input string is:



https://lh


however, with:



var_dump(filter_var('https://lh', FILTER_VALIDATE_URL)) // string(10) "https://lh"


for some reason the above string is classed as a valid URL. I have read another SO post saying that FILTER_VALIDATE_URL is not restricted to the http protocol but surely the above link is not a valid URL for any protocol.



Why is this happening?










share|improve this question
















The input string is:



https://lh


however, with:



var_dump(filter_var('https://lh', FILTER_VALIDATE_URL)) // string(10) "https://lh"


for some reason the above string is classed as a valid URL. I have read another SO post saying that FILTER_VALIDATE_URL is not restricted to the http protocol but surely the above link is not a valid URL for any protocol.



Why is this happening?







php url filter-var






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 15 '18 at 22:41







Script47

















asked Nov 15 '18 at 22:36









Script47Script47

9,34642246




9,34642246







  • 4





    That is, in fact, a valid URL.

    – Paul
    Nov 15 '18 at 22:46











  • Whats your problem with this url? Is it because, it's only a tld?

    – Philipp
    Nov 15 '18 at 22:51







  • 2





    What makes a URL valid is whether or not it is accordance with the spec, rfc 3986 (though I believe FILTER_VALIDATE_URL still uses the older rfc 2396, the differences are irrelevant here.)

    – Paul
    Nov 15 '18 at 23:19







  • 2





    Try calling parse_url() and performing additional validation steps on the individual pieces. Be warned: You seem to have quite a few incorrect assumptions about what valid URLs and hostnames can look like.

    – Sammitch
    Nov 16 '18 at 0:05







  • 1





    @FunkFortyNiner as others have stated, a valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc ...

    – ivanivan
    Nov 16 '18 at 2:13












  • 4





    That is, in fact, a valid URL.

    – Paul
    Nov 15 '18 at 22:46











  • Whats your problem with this url? Is it because, it's only a tld?

    – Philipp
    Nov 15 '18 at 22:51







  • 2





    What makes a URL valid is whether or not it is accordance with the spec, rfc 3986 (though I believe FILTER_VALIDATE_URL still uses the older rfc 2396, the differences are irrelevant here.)

    – Paul
    Nov 15 '18 at 23:19







  • 2





    Try calling parse_url() and performing additional validation steps on the individual pieces. Be warned: You seem to have quite a few incorrect assumptions about what valid URLs and hostnames can look like.

    – Sammitch
    Nov 16 '18 at 0:05







  • 1





    @FunkFortyNiner as others have stated, a valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc ...

    – ivanivan
    Nov 16 '18 at 2:13







4




4





That is, in fact, a valid URL.

– Paul
Nov 15 '18 at 22:46





That is, in fact, a valid URL.

– Paul
Nov 15 '18 at 22:46













Whats your problem with this url? Is it because, it's only a tld?

– Philipp
Nov 15 '18 at 22:51






Whats your problem with this url? Is it because, it's only a tld?

– Philipp
Nov 15 '18 at 22:51





2




2





What makes a URL valid is whether or not it is accordance with the spec, rfc 3986 (though I believe FILTER_VALIDATE_URL still uses the older rfc 2396, the differences are irrelevant here.)

– Paul
Nov 15 '18 at 23:19






What makes a URL valid is whether or not it is accordance with the spec, rfc 3986 (though I believe FILTER_VALIDATE_URL still uses the older rfc 2396, the differences are irrelevant here.)

– Paul
Nov 15 '18 at 23:19





2




2





Try calling parse_url() and performing additional validation steps on the individual pieces. Be warned: You seem to have quite a few incorrect assumptions about what valid URLs and hostnames can look like.

– Sammitch
Nov 16 '18 at 0:05






Try calling parse_url() and performing additional validation steps on the individual pieces. Be warned: You seem to have quite a few incorrect assumptions about what valid URLs and hostnames can look like.

– Sammitch
Nov 16 '18 at 0:05





1




1





@FunkFortyNiner as others have stated, a valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc ...

– ivanivan
Nov 16 '18 at 2:13





@FunkFortyNiner as others have stated, a valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc ...

– ivanivan
Nov 16 '18 at 2:13












1 Answer
1






active

oldest

votes


















-1














OK, so lots of comments later with some digression and no posted answer.



Therefore...



A valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc



If any of the other commenters feel the need to edit, etc. feel free.






share|improve this answer























  • The client does not need to be able to resolve a host name in order for a URL to be valid.

    – Paul
    Nov 16 '18 at 6:01










Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53328847%2fwhy-is-filter-var-with-filter-validate-url-showing-this-string-as-a-valid-url%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









-1














OK, so lots of comments later with some digression and no posted answer.



Therefore...



A valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc



If any of the other commenters feel the need to edit, etc. feel free.






share|improve this answer























  • The client does not need to be able to resolve a host name in order for a URL to be valid.

    – Paul
    Nov 16 '18 at 6:01















-1














OK, so lots of comments later with some digression and no posted answer.



Therefore...



A valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc



If any of the other commenters feel the need to edit, etc. feel free.






share|improve this answer























  • The client does not need to be able to resolve a host name in order for a URL to be valid.

    – Paul
    Nov 16 '18 at 6:01













-1












-1








-1







OK, so lots of comments later with some digression and no posted answer.



Therefore...



A valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc



If any of the other commenters feel the need to edit, etc. feel free.






share|improve this answer













OK, so lots of comments later with some digression and no posted answer.



Therefore...



A valid URL doesn't have to use a FQDN - it can use just a host name. protocol://host:port/path/filename.foo?arguments Protocol and host name are the only things required to initiate a connection, only critical part on the host name is that the client has to be able to resolve it - hosts file, dns, dns with appended search domain(s), etc



If any of the other commenters feel the need to edit, etc. feel free.







share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 16 '18 at 3:13









ivanivanivanivan

1,683268




1,683268












  • The client does not need to be able to resolve a host name in order for a URL to be valid.

    – Paul
    Nov 16 '18 at 6:01

















  • The client does not need to be able to resolve a host name in order for a URL to be valid.

    – Paul
    Nov 16 '18 at 6:01
















The client does not need to be able to resolve a host name in order for a URL to be valid.

– Paul
Nov 16 '18 at 6:01





The client does not need to be able to resolve a host name in order for a URL to be valid.

– Paul
Nov 16 '18 at 6:01



















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53328847%2fwhy-is-filter-var-with-filter-validate-url-showing-this-string-as-a-valid-url%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Top Tejano songwriter Luis Silva dead of heart attack at 64

ReactJS Fetched API data displays live - need Data displayed static

Evgeni Malkin