web-dev-qa-db-fra.com

Comment forcer un lien HTML à être absolu?

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?

23
Arnaud

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).

32
Marco Chiappetta

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!

6
StephanieQ

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é.

5
sinhayash