2010-09-11 5 views
0

Je travaille actuellement sur un projet qui est une shoutbox. Depuis que j'ai désactivé tout le HTML, les gens oublient probablement de fermer une étiquette et tout bousiller, je voulais faire une forme différente d'ajouter un peu de flair pour les gens à utiliser dans leurs messages.Aide d'expression rationnelle PHP

Ce que je veux est de configurer une expression régulière en PHP pour ajouter des balises autour du texte. Voici un exemple de ce que je veux faire ...

Si une personne tape "[Hello!] Comment est {tout le monde}?" il afficherait en tant que tel ...
"Bonjour! Comment est tout le monde?"

Le texte entre les crochets [] deviendrait gras et le texte entre les parenthèses {} serait en italique.

Est-ce que quelqu'un sait comment écrire une expression régulière pour cela?
Merci!

+0

Pourquoi ne pas utiliser Markdown, textile, WikiText ou BBCode? – prodigitalson

+0

L'utilisation de tels nécessiterait une autre structure implémentée dans le code. J'ai pensé qu'une simple expression régulière garderait le code simple. –

Répondre

4

Une façon de le faire serait:

$str = preg_replace('~\[([^\]]*)\]~', '<b>\\1</b>', $str); 
$str = preg_replace('~{([^}]*)}~', '<i>\\1</i>', $str); 

Comme on le voit sur codepad. Cela étant dit, je désapprouve de créer un autre langage de balisage. Comme le BBCode, c'est du mal. Le BBCode est un langage de balisage inventé par des programmeurs fainéants qui ne voulaient pas filtrer correctement le HTML. En conséquence, nous avons maintenant une «norme» lâche qui est difficile à mettre en œuvre. Filtrez votre HTML la bonne façon:

http://htmlpurifier.org/

+0

+1 pour le sentiment. Réinventer la roue est une perte de temps. – EboMike

+0

Vous êtes très intelligent quand il s'agit d'expressions régulières haha. Travaillé comme un charme !!! Merci beaucoup pour votre aide! –