Comment puis-je ajouter http://
à une URL si elle n'inclut pas déjà un protocole (par exemple http://
, https://
ou ftp://
)?
Exemple:
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
seul, comment sauriez-vous si cela devrait êtrehttp
,https
ouftp
?Réponses:
Une version modifiée du code @nickf:
Constate
ftp://
,ftps://
,http://
ethttps://
dans un cas de manière insensible.la source
$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;
Au moment de la rédaction de cet article, aucune des réponses n'utilisait de fonction intégrée pour cela:
Voir également:
parse_url()
la source
echo addScheme('//google.com');
ltrim($url, '/')
Vérifiez simplement s'il existe un protocole (délimité par ": //") et ajoutez "http: //" s'il n'y en a pas.
Remarque : cela peut être une solution simple et directe, mais la réponse de Jack en utilisant
parse_url
est presque aussi simple et beaucoup plus robuste. Vous devriez probablement utiliser celui-là.la source
La meilleure réponse pour cela serait quelque chose comme ceci:
la source
Scannez la chaîne pour
://
, si elle ne l'a pas, ajoutez-lahttp://
à la chaîne .., tout le reste utilise simplement la chaîne telle quelle .Cela fonctionnera à moins que vous n'ayez une chaîne d'entrée de mauvaise qualité.
la source
nickf solution modifiée:
la source
ftps://
c'est également valable.ce code ajoutera http: // à l'URL s'il n'y est pas.
la source
Essaye ça. Pas étanche
*
, mais peut-être assez bon:*
: autrement dit, les préfixes comme "fttps: //" sont traités comme valides.la source