Expression régulière de remplacement

sim75
Invité n'ayant pas de compte PHPfrance

19 janv. 2006, 23:21

Bonsoir,
J'ai un texte dans lequel il doit être possible de saisir des balises a des fins des remplacements par un lien à l'affichage.

Par exemple, dans ce text, il y a :
[ID=1]Virginie[/ID]
A l'affichage j'aimerai qu'il soit remplacé par un lien html vers une page web. Ce qui donnerait :
<a href="fiche.php?id=1">Virginie</a>
Je me suis donc créé une petite fonction :
function set_lien_fiche($texte)
{
	$texte = eregi_replace("\[id=([0-9]+)\](.*)\[/id\]", '<a href="fiche.php?id=\1">\2</a>', $texte);
	return $texte;
}
Elle fonctionne bien, si ce n'est un petit pb. Tant que je n'ai qu'un remplacement à faire, tout va bien. Par contre, si dans le texte il y a plusieurs fois des balises style [ID=X]zzz[/ID] ca ne fonctionne plus. Il transforme tout en lien, entre le 1er [ID] et le dernier [/ID] dans le texte.

C'est quelques peu... gênant.
Si quelqu'un à une idée... je suis preneur.

Bonne soirée à vous

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 janv. 2006, 23:50

Salut,

proposition avec preg_replace() et avec l'option U à la fin
function set_lien_fiche($texte)
{
    $texte=preg_replace('/\[ID=([0-9]+)\](.*)\[\/ID\]/U','<a href="fiche.php?id=$1">$2</a>',$texte);  
    return $texte;
}   
$txt="[ID=1]Virginie[/ID] et encore un autre lien [ID=2]Truc[/ID]";
     
echo set_lien_fiche($txt);

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

20 janv. 2006, 00:01

Je te fais pas de bisous, mais le coeur y est ! Franchement, merci bcp !

[-o< merci merci merci :)