Вот, возможно, лучшее решение.Если по какой-либо причине вы используете относительный URL-адрес, например:
// www.example.com/path
До php 5.4.7 это не создавало бы элемент массива [схема], которыйскинул бы функцию мачека.Этот метод также может быть быстрее.
$url = '//www.example.com/path';
preg_match('/(https?:\/\/|\/\/)([^\/]+)(.*)/ism', $url, $result);
$url = $result[1].$result[2].urlencode(urldecode($result[3]));