¿Cómo puedo agregar http://
a una URL si aún no incluye un protocolo (por ejemplo http://
, https://
o ftp://
)?
Ejemplo:
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
solo, ¿cómo sabría si debería serhttp
,https
oftp
?Respuestas:
Una versión modificada del código @nickf:
Reconoce
ftp://
,ftps://
,http://
yhttps://
de una manera sensible a mayúsculas.fuente
$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;
En el momento de escribir este artículo, ninguna de las respuestas usaba una función incorporada para esto:
Ver también:
parse_url()
fuente
echo addScheme('//google.com');
ltrim($url, '/')
Simplemente verifique si hay un protocolo (delineado por ": //") y agregue "http: //" si no lo hay.
Nota : Esta puede ser una solución simple y directa, pero el uso de la respuesta de Jack
parse_url
es casi tan simple y mucho más robusto. Probablemente deberías usar ese.fuente
La mejor respuesta para esto sería algo como esto:
fuente
Escanee la cadena para
://
, si no la tiene, antepongahttp://
la cadena ..., todo lo demás simplemente use la cadena como está.Esto funcionará a menos que tenga una cadena de entrada basura.
fuente
solución de nickf modificada:
fuente
ftps://
que también es válido.este código agregará http: // a la URL si no está allí.
fuente
Prueba esto. No hermético
*
, pero podría ser lo suficientemente bueno:*
: es decir, los prefijos como "fttps: //" se tratan como válidos.fuente