Page 1 sur 1

Expression régulière de remplacement

Posté : 19 janv. 2006, 23:21
par sim75
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

Posté : 19 janv. 2006, 23:50
par Truc
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);

Posté : 20 janv. 2006, 00:01
par Invité
Je te fais pas de bisous, mais le coeur y est ! Franchement, merci bcp !

[-o< merci merci merci :)