Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'm using this PHP function for validate an URL.

$url = preg_replace("/[^A-Za-z0-9-/.:]/", "", trim($url));
$url = preg_replace('%^(?!https?://www.).*%', 'http://www.$0', $url);

But, this isn't perfect for me. I want to this controls :

1 - Is it starting with http:// or https:// ? If not, add http (or https)

2 - If it hasn't subdomain and if it hasn't www , add . But if it has subdomain don't add www.

Examples :

example.com
CONVERT -> http://www.example.com

www.example.com
CONVERT -> http://www.example.com

subdomain.example.com
CONVERT -> http://subdomain.example.com

http://subdomain.example.com
CONVERT -> http://subdomain.example.com

So, I need improve my REGEX pattern. But I can't. How can I use this?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
227 views
Welcome To Ask or Share your Answers For Others

1 Answer

Remove the www. from the second regex. This would make it work on the subdomain examples.

If you want to make it more intelligent, use an if and a second regex to check for ^(w+://)?w+.w+$ prior prefixing it with http:// or an extra www.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...