Как я могу добавить http://
URL-адрес, если он еще не включает протокол (например http://
, https://
или ftp://
)?
Пример:
addhttp("google.com"); // http://google.com
addhttp("www.google.com"); // http://www.google.com
addhttp("google.com"); // http://google.com
addhttp("ftp://google.com"); // ftp://google.com
addhttp("https://google.com"); // https://google.com
addhttp("http://google.com"); // http://google.com
addhttp("rubbish"); // http://rubbish
mozilla.org
одни, как бы вы узнали, должно ли это бытьhttp
,https
илиftp
?Ответы:
Модифицированная версия кода @nickf:
Признает
ftp://
,ftps://
,http://
иhttps://
в случае нечувствительным образом.источник
$url = "www.google.com"; $init = microtime(true); for( $i = 1; $i < 100000; $i++ ) { addScheme( $url ); } echo microtime(true) - $init; echo "<BR>"; $init = microtime(true); for( $i = 1; $i < 100000; $i++ ) { addhttp( $url ); } echo microtime(true) - $init;
На момент написания ни один из ответов не использовал для этого встроенную функцию:
Смотрите также:
parse_url()
источник
echo addScheme('//google.com');
ltrim($url, '/')
Просто проверьте, существует ли протокол (обозначенный «: //»), и добавьте «http: //», если его нет.
Примечание : это может быть простое и понятное решение, но ответ Джека с использованием
parse_url
почти так же прост и намного надежнее. Вам, вероятно, следует использовать это.источник
Лучшим ответом на это будет что-то вроде этого:
источник
Просканируйте строку
://
, если ее нет, добавьтеhttp://
к строке .., все остальное просто используйте строку как есть.Это будет работать, если у вас нет строки ввода мусора.
источник
модифицированный раствор nickf:
источник
ftps://
также действительным.этот код добавит http: // к URL-адресу, если его там нет.
источник
Попробуй это. Не водонепроницаем
*
, но может быть достаточно:*
: то есть префиксы типа «fttps: //» считаются действительными.источник