2016-08-30 3 views
-1

Я ищу несколько сайтов, чтобы исправить эту проблему. Проблема в том, что я прошу пользователя ввести адрес веб-сайта и, как говорят люди, никогда не доверяет пользователю.Проверка URL должна содержать http или https

Таким образом, возможный сценарий может быть такой:

HTTPS или http://www.google.com

HTTPS или http://google.com

www.google.com

google.com

Теперь я URL-адрес должен быть таким. http или https // www.google.com

На данный момент у меня есть код ниже, но он не работает должным образом.

$url = "www.google.com";  
if (preg_match("/\b(?:(?:https?):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $url)) { 
     echo "URL is valid"; 
    } 
    else { 
     echo "URL is invalid"; 
    } 
+2

использовать 'parse_url': http://php.net/manual/en /function.parse-url.php –

+0

если вы можете объяснить, почему тогда было бы здорово. Спасибо за downvoting – Ironic

+2

Или, возможно, используйте 'filter_var' с' FILTER_VALIDATE_URL' – RamRaider

ответ

3

Проверьте, если начало строки содержит http, который также включает в себя https и проверить, если это действительный URL:

if((strpos($url, 'http') === 0) && filter_var($url, FILTER_VALIDATE_URL)) { 
    echo "URL is valid"; 
} else { 
    echo "URL is invalid"; 
} 
+0

Ваше решение верное. Я был глуп, чтобы проверить регулярное выражение. Это очень просто. Спасибо, проголосовали. – Ironic

0

Попробуйте это выражение

/[[email protected]:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[[email protected]:%_\+.~#?&//=]*)?/gi 

Это aceept все случаи, которые вы упомянули выше

+0

Я хочу, чтобы только одно условие было правильным (http://www.google.com), отдых должен быть недействительным. – Ironic

Смежные вопросы