Remplacer des [ ] par une balise HTML

Remplacer des [ ] par une balise HTML - PHP - Programmation

Marsh Posté le 04-07-2006 à 11:40:43    

Salut tt le monde,
 
J'utilise un script en javascript qui met un textearea en forme avec des balises fictives entre crochets du genre , comme vous l'avez fait sur ce forum.
 
J'enregistre le tout dans une BDD MySQL.
 
J'aimerai pouvoir afficher le texte enregistré en transformant les crochets en balises HTML standard.
Donc faire -> <a href="Ce qu'il y a entre mes balises crochets">Ce qu'il y a entre mes balises crochets</a>.
 
 
Ca fait 2 jours que je cherche sur le web et j'ai pas trouvé de trucs qui marche vraiment bien.
 
Quelqu'un peut-il m'expliquer comme faire svp ?  :)  
 
Merci d'avance.

Reply

Marsh Posté le 04-07-2006 à 11:40:43   

Reply

Marsh Posté le 04-07-2006 à 12:52:17    

J'ai trouvé une manière avec preg_replace() mais maintenant mon souci est de pouvoir modifier plusieurs paramêtres.

Reply

Marsh Posté le 04-07-2006 à 13:36:40    

pour remplacer les balises d'adresses :  
 
$texte = preg_replace('!\[adresse\](.+)\[/adresse\]!iU', '<a href="$1">$1</a>', $texte);

 
encore un exemple, pour mettre des titres par exemple
 
 
$texte = preg_replace('!\[titre\](.+)\[/titre\]!iU', '<h1>$1</h1>', $texte);

 
 
tu vois qu'en fait le gros y est, tu n'as qu'a chager le nom et t'ajoutes des options

Message cité 1 fois
Message édité par yves10 le 04-07-2006 à 13:37:39
Reply

Marsh Posté le 04-07-2006 à 14:29:33    

yves10 a écrit :

pour remplacer les balises d'adresses :  
 
$texte = preg_replace('!\[adresse\](.+)\[/adresse\]!iU', '<a href="$1">$1</a>', $texte);

 
encore un exemple, pour mettre des titres par exemple
 
 
$texte = preg_replace('!\[titre\](.+)\[/titre\]!iU', '<h1>$1</h1>', $texte);

 
 
tu vois qu'en fait le gros y est, tu n'as qu'a chager le nom et t'ajoutes des options


 
Merci pour ces exemples.
 
Maintenant, comme je le disais, mon souci est le suivant:
j'ai un textarea dans lequel j'insère pusieurs "fausses" balises.
Ex: [url] et [gras]
 
Lorsque je récupère le contenu de ce bloc dans ma base de données, j'ai une seule variable du type :
$row_text = $row['text']
 
Je voudrais pouvoir afficher cette variable en changeant les fausses balises en HTML.
Il faut donc que pour 1 seule variable je fasse un preg_replace de plusieurs balises.
 
(Je sais pas si je suis super clair).
 
Bon en gros je vais essayé ça :

Code :
  1. $text = preg_replace (preg_replace('!\[url\](.+)\[/url\]!iU', '<a href="$1">$1</a>', $row_text);
  2. $text .= preg_replace ('!\[gras\](.+)\[/gras\]!iU', '<b>$1</b>', $row_text);
  3. echo $text;

Reply

Marsh Posté le 04-07-2006 à 14:30:40    

pardon il ya un erreur. J'ai fait une répétition de preg dans la première ligne.

Reply

Marsh Posté le 04-07-2006 à 14:44:39    

preg_replace peut recevoir des tableaux en arguments.
MMMmm il faudrait pouvoir mettre la main sur une doc de preg_replace ... seulement on a aucune piste :/

Reply

Marsh Posté le 04-07-2006 à 14:48:28    

Code :
  1. function parse($msg)
  2. {
  3. $tab = array(
  4. '#\[u\](.*)\[/u\]#Ui' => '<strong>$1</strong>',
  5. '#\[b\](.*)\[/b\]#Ui' => '<big>$1</big>',
  6. '#\[i\](.*)\[/i\]#Ui'   => '<em>$1</em>',
  7. '#\[url\](.+)\[/url\]#Ui' => '<a href="$1">$1</a>'
  8. );
  9. return(preg_replace(array_keys($tab) , array_values($tab) , $msg));
  10. }


Message édité par afbilou le 04-07-2006 à 14:51:43
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed