Dernière mise à jour: mer 16 fév 2011

autolink()

(PHP 4, PHP 5)

Converti les urls contenus dans une chaine en liens cliquables.

Source

<?php

function autolink($str, $attributes=array()) {
	$attrs = '';
	foreach ($attributes as $attribute => $value) {
		$attrs .= " {$attribute}=\"{$value}\"";
	}

	$str = ' ' . $str;
	$str = preg_replace(
		'`([^"=\'>])((http|https|ftp)://[^\s<]+[^\s<\.)])`i',
		'$1<a href="$2"'.$attrs.'>$2</a>',
		$str
	);
	$str = substr($str, 1);
	
	return $str;
}

?>

Syntaxe

string autolink ( string $str [, array $attributes = array() ] )

Arguments

  1. str - La chaîne d'entrée.
  2. attributes - Optionnel. Si spécifié, ce paramètre doit être un tableau associatif de format $arr['attribute'] = $value.

Valeurs de retour

Retourne une copie de la chaîne str dont les urls ont été encapsulées dans des balises <a>.

Exemples

Exemple #1 Exemple avec autolink()

<?php

$str = 'A link : http://example.com/?param=value#anchor.';
$str = autolink($str);

echo $str; // A link : http://example.com/?param=value#anchor.

?>

Exemple #2 Exemple avec autolink()

<?php

$str = 'http://example.com/';
$str = autolink($str, array("target"=>"_blank","rel"=>"nofollow"));

echo $str; // http://example.com/

?>

Commentaire(s)

  • Excellent bit of code, I just wanted to drop a thank you for the function as there are so many half-correct and all-wrong answers out there but very few of them compare to the accuracy of this script. I'm terrible at regex so I always look to others for help in that department.

    Kudos!
  • Bonjour,
    merci pour votre fonction qui fonctionne plutôt bien. Cependant, le lien se fait mal lorsqu'il y a un retour chariot à la suite d'un lien. En effet, le retour chariot (\r) est attaché au lien et englobé dans celui-ci. Le lien se termine alors que le premier espace rencontré après le retour chariot.
  • La fonction a été mise à jour.
    Dorénavant, elle ne devrait plus convertir les urls contenues dans des balises HTML.
  • Un grand merci pour ce petit tuto assez clair qui permet de travailler les chaines d'url !

Poster un commentaire