Ah d'accord, tu veux faire ton propre bbcode en fait.
C'est relativement simple à faire, s'il ne s'agit que de "traduire" les balises bb par des balises XHTML.
On va pour ça se servir d'un tableau associatif qui nous fournira cette traduction:
Code:
1 2 3 4 5 6
|
$bb_tags = array(
'a' => 'em',
'b' => 'strong',
'c' => 'center'
); |
On va ensuite se servir de ce tableau pour faire les traductions qui vont bien:
Code:
1 2 3 4 5 6 7
|
// On construit les patterns de remplacement
$bb_patterns = array_map(function ($item) { return "#\[$item\](.*)\[/$item\]#im"; }, array_keys($bb_tags));
var_dump($bb_patterns);
$bb_replace = array_map(function ($item) { return "<$item>$1</$item>"; }, array_values($bb_tags));
var_dump($bb_replace); |
Les var_dump nous servent à voir que nos patterns de traduction sont corrects:
Code:
1 2 3 4 5 6 7 8 9 10
|
array
0 => string '#\[a\](.*)\[/a\]#im' (length=19)
1 => string '#\[b\](.*)\[/b\]#im' (length=19)
2 => string '#\[c\](.*)\[/c\]#im' (length=19)
array
0 => string '<em>$1</em>' (length=11)
1 => string '<strong>$1</strong>' (length=19)
2 => string '<center>$1</center>' (length=19) |
ensuite, y'a plus qu'a appliquer tout ça sur une chaine:
Code:
1 2 3 4 5
|
$text = <<<TXT
[a]hello[/a] worldTXT;
var_dump(preg_replace($bb_patterns, $bb_replace, $text)); |
Et voilà le résultat:
Code:
1 2
|
string '<center><em>hello</em> <strong>world</strong></center>' (length=54) |
C'est tout bête ;)