2016-01-10 1 views
0

В настоящее время я использую jBBCodes для своего форума (выполненный на заказ), и у меня есть лимит символов в 15 к, однако моя проблема заключается в том, что проверка счетчика символов также будет учитывать теги bbcode, например [b] Hey! [/ B] будет считать как 11, когда оно должно считаться 4.Исключить теги BBCode из числа символов?

Проверка счета;

if (strlen($message)<5 || strlen($message)>15000) { 
    die("<div style='text-align:center;' class='error'>The character limit is 5 to 15,000, your post was ".number_format(strlen($message))." character(s).</div><br>"); 
    } 

мне интересно, как я могу исключить BBCodes я не хочу, чтобы исключить [] люди используют его для других вещей, на вершине, что любой человек может просто [сообщение], так что это может быть и речи будет там любой возможный способ сделать это, не проверяя каждый тег в полном объеме?

+1

Посмотрите на регулярное выражение. у вас впереди веселый день. –

+0

Пожалуйста, попробуйте мою библиотеку для разбора коротких кодов и BBCodes: github.com/thunderer/Shortcode. В этом примере вам просто нужно зарегистрировать короткий код по умолчанию, который только возвращает содержимое и длину подсчета строки после обработки. Если вам нужна помощь, сообщите мне о проблемах в GitHub. –

ответ

0

Это довольно простая задача для регулярных выражений.

В принципе, если вам нужна длина строки не включая BBCodes, а затем использовать этот маркер: strlen(preg_replace('~\[(codes|to|match)](.*?)\[/\1]~g', '$2', $message))