Dans mon site Web, les utilisateurs peuvent mettre une URL dans leur profil.
Cette URL peut être http://www.google.com
ou www.google.com
ou google.com
.
Si je viens d'insérer dans mon PHP code <a href="$url">$url</a>
, le lien n'est pas toujours absolu.
Comment puis-je forcer la balise a
à être absolue?
Si vous préfixez l'URL avec //
il sera traité comme absolu. Par exemple:
<a href="//google.com">Google</a>
.
Gardez à l'esprit que cela utilisera le même protocole que celui utilisé pour la page (par exemple, si l'URL de votre page est https://path/to/page
l'URL résultante sera https://google.com
).
J'ai récemment dû faire quelque chose de similaire.
if (strpos($url, 'http') === false) {
$url = 'http://' .$url;
}
Fondamentalement, si l'url ne contient pas 'http', ajoutez-la au début de la chaîne (préfixe).
Ou nous pouvons le faire avec RegEx
$http_pattern = "/^http[s]*:\/\/[\w]+/i";
if (!preg_match($http_pattern, $url, $match)){
$url = 'http://' .$url;
}
Merci à @JamesHilton d'avoir signalé une erreur. Je vous remercie!
Utilisez un protocole, de préférence http: //
<a href="http://www.google.com">Google</a>
Demandez aux utilisateurs de saisir l'URL dans ce format, ou concaténez http: // s'il n'est pas ajouté.