Notice: session_start() [function.session-start]: ps_files_cleanup_dir: opendir(/var/lib/php5) failed: Permission denied (13) in /home/expreg/mvc/main.php on line 43
Citations imbriquées sur un forum ! sur ExpReg

Général

Les PCRE

Les POSIX

Pratique

Linux

Spécial php

Les billets de fred

Citations imbriquées sur un forum !

Vous connaissez tous le principe des citations sur les forums qui permet de mettre dans un encadré une portion de texte que l'on veut mettre en évidence et souvent extraite du texte d'un autre internaute.

Comment gérer simplement une série de citations imbriquées ?

Je pense que vous savez tous que je déteste le BBcode. Pour cette raison j'ai adopté un balisage du style <citation="Auteur">. Pour les fervents adeptes de la mise en forme à la phpBB, vous pourrez bien évidemment adapter le code à votre balisage.

Grâce à une fonction de callback, on va matcher toutes les balises <citation="Auteur"> que l'on va trouver dans le texte. Pour les balises de fermeture </citation>, un simple str_replace fera largement l'affaire.

Le texte suivant comporte une série de balises de citation imbriquées avec des retours à la ligne.

<?php
$texte='Voici un texte rempli de citations diverses, imbriquées ou pas.
<citation="Yves">Je fais une belle citation<citation="Popol"> ceci est la citation de Popol <citation="Robert">
puis celle de Robert <citation>Celle de l\'inconnu est ici</cite></cite>

<citation="Jean">Et celle de Jean aussi</cite></cite>

le tout suivi de texte normal pour enfin citer <citation="Nono">Celle de Nono est ici</cite></cite>';

function citation($match)
{
return '<blockquote style="border:1px dashed #ff0000;padding:5px;margin:5px;clear:both;"><strong>'. ((!empty($match[1])) ? $match[1].' a dit :' : 'Citation :') . '</strong><br />';
}

$chaine=preg_replace_callback('`<citation(?:="([^"]+)")?>`si','citation',$texte);
$chaine=str_replace('</cite>','</blockquote>',$chaine);

echo $chaine;
?>

Yves a dit :
Je fais une belle citation
Popol a dit :
ceci est la citation de Popol
Robert a dit :
puis celle de Robert
Citation :
Celle de l'inconnu est ici
Jean a dit :
Et celle de Jean aussi
le tout suivi de texte normal pour enfin citer
Nono a dit :
Celle de Nono est ici

ADAM Benjamin 2008 | Admin