У меня есть следующие правила, определенные для разрешения пользователю создавать таблицы с помощью bbcode:
'table' => array(
'type' => BBCODE_TYPE_NOARG,
'open_tag' => '<table>',
'close_tag' => '</table>',
'childs' => 'tr',
'tr' => array(
'type' => BBCODE_TYPE_NOARG,
'open_tag' => '<tr>',
'close_tag' => '</tr>',
'childs' => 'th,td',
'parent' => 'table'),
'th' => array(
'type' => BBCODE_TYPE_NOARG,
'open_tag' => '<th>',
'close_tag' => '</th>',
'parent' => 'tr'),
'td' => array(
'type' => BBCODE_TYPE_NOARG,
'open_tag' => '<td>',
'close_tag' => '</td>',
'parent' => 'tr'),
Идея в том, что вы можете определить таблицу, строку таблицы или ячейки таблицы, но:
TABLE
может иметь только TR
как его детиTR
может иметь только TABLE
как его родитель, и может иметь только TH
или же TD
как его детиTH
или же TD
может иметь только TR
как его родительЭта директива parent / childs задокументирована очень кратко здесь:
http://php.net/manual/en/function.bbcode-create.php
Тем не менее, базовые эксперименты показывают, что директива «родитель», кажется, ничего не делает. То есть с приведенными выше правилами, он с радостью разберет TR
элемент на верхнем уровне. Это кажется очень странным дизайнерским решением, так что мне интересно, что я делаю не так? Кроме того, поскольку форум, на котором это реализовано, выложен в виде таблицы, когда кто-то делает это, он довольно эффектно нарушает отображение форума.
Задача ещё не решена.
Других решений пока нет …