如何从 bbcode post 中获取有效的子字符串
how to get a valid substring from bbcode post
想法是让用户 post 的前 80 个字符在某些概览模式下可见。但是我如何使用 bbtags 做到这一点?
- 如何不在 bbtag 中间剪切字符串
- 如何不只打开标签。
- 我不能忽略那些标签,因为其中一个是剧透:-)(我可以忽略简单的格式)
我完全不知道该怎么做,快速谷歌搜索也没有帮助。
示例:
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其他算法,并使用正则表达式....
想法是让用户 post 的前 80 个字符在某些概览模式下可见。但是我如何使用 bbtags 做到这一点?
- 如何不在 bbtag 中间剪切字符串
- 如何不只打开标签。
- 我不能忽略那些标签,因为其中一个是剧透:-)(我可以忽略简单的格式)
我完全不知道该怎么做,快速谷歌搜索也没有帮助。
示例:
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其他算法,并使用正则表达式....