¿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.orgsolo, ¿cómo sabría si debería serhttp,httpsoftp?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_urles 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