preg_match разрешает только https:// в URL-адресе

Я хотел бы разрешить использование только ссылок https:// в качестве удаленных изображений аватара в phpbb, чтобы избежать смешанного контента. Кажется, это код, который используется для проверки правильности введенного URL-адреса (его можно найти в /phpbb/avatar/driver/remote.php):

if (!preg_match('#^(http|https|ftp)://(?:(.*?\.)*?[a-z0-9\-]+?\.[a-z]{2,4}|(?:\d{1,3}\.){3,5}\d{1,3}):?([0-9]*?).*?\.('. implode('|', $this->allowed_extensions) . ')$#i', $url))
{
    $error[] = 'AVATAR_URL_INVALID';
    return false;
}

Я хотел бы добавить условие if{} перед этим блоком кода, чтобы дать информативное сообщение об ошибке, если пользователь выбрал изображение с незащищенного сервера. Может ли кто-нибудь помочь мне определить правильную строку preg_match(), пожалуйста?


person richey    schedule 12.04.2016    source источник


Ответы (1)


По предложению @casimir я использовал следующий код, и он работает:

    $urlchk = parse_url($url);
    $urlscheme = isset($urlchk['scheme']) ? $urlchk['scheme'].'://' : 'http://';
    if ($urlscheme=='http://'){
        // error message
    }
person richey    schedule 13.04.2016