Как удалить пустой bbcode из строки в PHP? - PullRequest
0 голосов
/ 11 мая 2018

Я пишу это потому, что я обновляю строку с "bbcode" на database и не могу использовать contenteditable ... после получения строки в базе данных, проанализированной bbCodes.Надстройки bbCode не работают так, как я хочу.

У меня есть простой BBCODE парсер.

//////////////////////////////
function bbc2html($content) {
  $search = array (
    '/(\[b\])(.*?)(\[\/b\])/',
    '/(\[i\])(.*?)(\[\/i\])/',
    '/(\[u\])(.*?)(\[\/u\])/',
    '/(\[ul\])(.*?)(\[\/ul\])/',
    '/(\[li\])(.*?)(\[\/li\])/',
    '/(\[url=)(.*?)(\])(.*?)(\[\/url\])/',
    '/(\[url\])(.*?)(\[\/url\])/'
  );

  $replace = array (
    '<strong>$2</strong>',
    '<em>$2</em>',
    '<u>$2</u>',
    '<ul>$2</ul>',
    '<li>$2</li>',
    '<a href="$2" target="_blank">$4</a>',
    '<a href="$2" target="_blank">$2</a>'
  );

  return preg_replace($search, $replace, $content);
}
//////////////////////////////

Мне написали вставку bbcode"textarea" функция JavaScript.Но мои гости - старики, и они по ошибке мультикликают или не понимают, как работают "bbcode" действия.

Большую часть времени у моих строк контента есть родительские родительские bb-коды.Например: [b][b]Simple[/b][b][/b][/b]

Как заменить чистую версию: [b][b]Simple[/b][b][/b][/b] на [b]Simple[/b]?

например, Я хочу убрать все шансы,

[?][[/?]?]***[/?][/?] => wrong click => output = "[?]***[/?]"

[?][/?] => empty => output = ""

[?]**[/?] => small 3  => output = "**"

[url=]****[/url] => empty url => output = "****"

[url]****[/url] => is not url => output = "****"
...