Выпуск BBcode PHP - PullRequest
       17

Выпуск BBcode PHP

0 голосов
/ 10 апреля 2020

Итак, я пытался заставить работать bb-коды на моем сайте, но когда я использую bb-код внутри bb-кода того же типа, он не будет работать.

Пример:

[color=#ff000]Test[color=#f2222]test2[/color] test3[/color]

должен возвращаться:

<font color="#ff000">Test<font color"=#f2222">test2</font> test3</font>

но я могу только вернуть его:

<font color="#ff000">Test[color=#f2222]test2l</font>[/color] test3</font>

вот мой php код:

function parsebb($body) {
    $find = array(
        "@\n@",
        "@[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]@is", 
        "/\[url\=(.+?)\](.+?)\[\/url\]/is",
        "/\[b\](.+?)\[\/b\]/is", 
        "/\[i\](.+?)\[\/i\]/is", 
        "/\[u\](.+?)\[\/u\]/is", 
        "/\[color\=(.+?)\](.+?)\[\/color\]/is",
        "/\[size\=(.+?)\](.+?)\[\/size\]/is", 
        "/\[font\=(.+?)\](.+?)\[\/font\]/is",
        "/\[center\](.+?)\[\/center\]/is",
        "/\[right\](.+?)\[\/right\]/is",
        "/\[left\](.+?)\[\/left\]/is",
        "/\[img\](.+?)\[\/img\]/is",
        "/\[email\](.+?)\[\/email\]/is"
    );
    $replace = array(
        "<br />",
        "<a href=\"\\0\">\\0</a>",
        "<a href=\"$1\" target=\"_blank\">$2</a>",
        "<strong>$1</strong>",
        "<em>$1</em>",
        "<span style=\"text-decoration:underline;\">$1</span>",
        "<font color=\"$1\">$2</font>",
        "<font size=\"$1\">$2</font>",
        "<span style=\"font-family: $1\">$2</span>",
        "<div style=\"text-align:center;\">$1</div>",
        "<div style=\"text-align:right;\">$1</div>",
        "<div style=\"text-align:left;\">$1</div>",
        "<img src=\"$1\" alt=\"Image\" />",
        "<a href=\"mailto:$1\" target=\"_blank\">$1</a>"
    );
    $body = htmlspecialchars($body);
    $body = preg_replace($find, $replace, $body);
    return $body;
}
$text = "[color=#ff000]Test[color=#f2222]test2[/color] test3[/color]";
echo parsebb($text);

как я могу решить эту проблему?

...