как получить правильную подстроку из сообщения bbcode

Идея состоит в том, чтобы первые 80 символов поста пользователя были видны в некотором режиме обзора. Но как мне это сделать с помощью bbtags?

  • как не разрезать строку в середине bbtag
  • как не просто открыть тег.
  • Я не могу просто игнорировать эти теги, потому что один из них является спойлером 🙂 (я мог бы игнорировать простое форматирование)

Я понятия не имею, как это сделать, и быстрое прибегание к помощи не помогло.

пример:

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

Если я хочу подстроку из 20 символов, я хотел бы это:

Darth Vader [spoiler]is fathe[/spoiler]

1

Решение

Может быть, вам поможет этот код, он должен быть доработан, но идея должна быть ясной:

$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);

Вы должны переписать код и проверить с этим регистром: «] [» и «[] [[[[]]] [[]] [[[[» «

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector