Witam, chciałem napisać prostą funkcję bbcode, zawierającą podstawowe znaczniki i jeden dodatkowy wywołujący inną funkcję, jej kod:
function bbcode($text){
//$text = preg_replace('\[form](.*?)\[/form]', ''.showForm('1').'', $text);
$patterns = array
(
'|\[b\](.*?)\[/b\]|i',
'|\[i\](.*?)\[/i\]|i',
'|\[u\](.*?)\[/u\]|i',
'|\[color=([a-z]+)\](.*?)\[/color\]|i',
'|\[size=([0-9]+)\](.*?)\[/size\]|i',
'|\[url=(http://)?(.+?)\](.*?)\[/url\]|i',
'|\[form\]([0-9])\[/form\]|i'
);
$replacements = array
(
'<span style="font-weight: bold;">\1</span>',
'<span style="font-style: italic;">\1</span>',
'<span style="text-decoration: underline;">\1</span>',
'<span style="color: \1;">\2</span>',
'<span style="font-size: \1px;">\2</span>',
'<a href="http://\2">\3</a>',
showForm('\1')
);
$text = str_replace("\n", '<br>', trim($text));
$text = preg_replace($patterns, $replacements, $text);
return $text;
}
Przy użyciu znacznika [form]2[/form] (2 pomiędzy znacznikami form to parametr $id funkcji showForm), funkcja showForm nie działa poprawnie, ponieważ $id wynosi \1, a powinno być 2.
Nie wiem jak rozwiązać ten problem, może ma ktoś jakąś propozycję?