如何从 bbcode post 中获取有效的子字符串

how to get a valid substring from bbcode post

想法是让用户 post 的前 80 个字符在某些概览模式下可见。但是我如何使用 bbtags 做到这一点?

我完全不知道该怎么做,快速谷歌搜索也没有帮助。

示例:

Darth Vader [spoiler]is father of luke skywalker[/spoiler]

如果我想要 20 个字符的子串,我想要这个:

Darth Vader [spoiler]is fathe[/spoiler]

也许你帮助这段代码,它应该进一步发展,但思路应该清晰:

$str = 'Darth Vader [spoiler]is father of luke skywalker[/spoiler]';

function parse($str, $count)
{
    $arr1 = str_split($str);
    $result = [];
    $i = 0;
    $open = false;
    foreach ($arr1 as $chr)
    {
        if ($open || $chr === '[')
        {
            $open = true;
            if ($chr === ']')
            {
                $result[] = $chr;
                $open = false;
            }
            else
            {
                $result[] = $chr;
            }
        }
        elseif($i <= $count)
        {
            $result[] = $chr;
            $i++;
        }
    }
    return implode($result);
}
echo parse($str, 20);

您必须重写代码,并用这种情况进行测试:“][”和“[][[[[[]]][[]][[[["

或select其他算法,并使用正则表达式....