Ajouter http à une URL si nécessaire

 Tiens, au passage je vous poste un chtit snippet pour ajouter http à une adresse si aucun protocole n'est spécifié.

 

J'ai eu besoin de faire ça pour SnippetVamp, donc j'en ai fait une fonction pour ceux qui pourraient en avoir l'utilité...

(Bon c'est juste une regex avec un négative look behind (old version) )

Voir plus bas pour l'embed


❝ 3 commentaires ❞

1  jerrywham le

Tu pourrais améliorer tout ça en faisant :

function add_protocol($url,$protocol='http://'){
if (preg_match('#^([ftphs]+://)([^ ]+)#',$url,$results){return $url;}else{return $protocol.$url;}
}

Le passage à count n'est pas nécessaire et bouffe de la ressource pour rien.
Tu me diras qu'avec les ordi d'aujourd'hui osef, je te dirai oui mais quand même !

 
2  Bronco le

Ha oui, tu as parfaitement raison ! en plus c'est plus compact !
Je vais modifier de suite

 
3  JeromeJ le

Moi aussi je veux tenter ma chance :D

Ma version:

function add_protocol($url, $protocol='http://')
return preg_replace('#^([fhtps]+://)((?1))#', '$2', $protocol.$url);

On ajoute toujours le protocole et si on l'y trouve 2 fois, on ne garde que le second.

Note sur la regex, (?1) permet de ne pas avoir à réécrire le contenu de la première parenthèse [fhtps]+://

Sinon dans votre version je pense que ([^ ]+) est un peu useless.
Pareil pour la variable $results, elle peut être omise.
Ainsi que les parenthèse capturantes autour de [ftphs]+:// .

Autre version (basée sur la votre):

function add_protocol($url,$protocol='http://'){
return (preg_match('#^[ftphs]+://#',$url) ? '':$protocol).$url;
}

En Python :p

import re

def add_protocol(url:str, protocol:str) -> str:
return (not re.match('[ftphs]+://', url)) * protocol + url

Note: re.match regarde toujours au début de la chaîne (donc on ne doit pas mettre ^) (sinon utilisez re.search)

@jerrywham personnellement j'envisage toujours la problématique de l'optimisation à grande échelle, pas besoin de se torturer avec ça évidemment, mais quand ça ne coûte quasiment rien, why not?

Puis la mentalité que les PC sont assez puissants fait que, certains, n'optimisent plus du tout, et, applications après applications, le tout s'accumule, consomment de plus en plus et force, eh oui, parfois à devoir acheter du nouveau matériel.

Car faute d'optimisation, des programmes (par exemple) qui auraient pu être légers comme plume, sont devenus des usines à gaz.

Alors, moi je pense que c'est le grain de riz qui fait pencher la balance :p

(Ceci dit je suis contre les benchmarks, ils sont rarement très représentatifs car il y a tant de cas à tester. Autant regarder le code et étudier la complexité de l’algorithme, et voilààààà !)

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

Inutile de poster un commentaire à la con pour vous faire de la pub, ce sera filtré et dégagé direct...

Quelle est la dernière lettre du mot dzpw ?