Général
- Présentation
- Les Symboles
- Les Métacaractères
- Les Ancres et Classes
- Les options
- Constantes prédéfinies
- Equivalences
- Créer un motif
- Les POSIX
- Les PCRE
- Les Plus des PCRE
- Les Assertions Part I
- Les Assertions Part II
- Motif conditionnel
- Mysql et les regex
- Url Rewriting
- Optimisation
- Aide mémoire
Les PCRE
Les POSIX
Pratique
Linux
Spécial php
- Conseils et Astuces
- Délimiteur PCRE
- Créer une bdd
- Utiliser du BBcode
- Le binaire
- Faire un panier
- Cases à cocher
- Citations imbriquées
- Colorateur syntaxique
- Les list-box ou combo-box
- Faire un diaporama
- Isset ou empty ?
- Une légende au survol
- Site en plusieurs langues
- Requêtes dynamiques
- Gestion des smiley
- Faire un moteur de template
- Timestamp php/mysql
- Timestamp mysql
- Matcher une adresse email
- Controler des données
Les billets de fred
- Les POSIX... mise en pratique !
- Limiter l'accès à un répertoire
- Alternance de couleurs
- Magic_quotes
- Désactiver les short_tags
- Require ou include : Bench
- Cohérence dans les chaines de caractères
- "echo" : lapin ou tortue ?
- Gérer un formulaire avec plusieurs boutons
- Le formulaire a t'il été soumis ?
- J'ai décidé de grossir
- La guerre des étoiles
- La guerre des boutons
- Headers already sent
- IP, IP, IP, houra !
- Créer un itérateur avec PHP5
- On vous conduit vers la lumière
- Comment utiliser MySQL avec PHP
- Non aux booléens !
- Php.ini : dist /recommended
- Include : gouffre ou fêlure ?
- Simple comme les sessions !
- Simplifier le traitement des erreurs
- Structurez vos applications
- Franchement, t'es trop for !
- Notice: Undefined variable (ou index)
- Proscrire les variables auto déclarées
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 citationPopol a dit :le tout suivi de texte normal pour enfin citer
ceci est la citation de PopolRobert a dit :
puis celle de RobertCitation :
Celle de l'inconnu est iciJean a dit :
Et celle de Jean aussiNono a dit :
Celle de Nono est ici
