Intellect Board Pro
Расширяемый движок форума с разделами разных типов
Объявление
Вышла версия 3.05 с фотогалереей и поддержкой PostgreSQL и SQLite.
Перейти к скачиванию
Привет, гость!

bb коды таблиц

вопрос по связкам с MS Word

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Одна страница
Распечатать
ElenaA
Новичок
Нет Всего сообщений: 1
Зарегистрирован: 22 сент. 2015 г., 10:23
Рейтинг пользователя: 0

0
#1
Здравствуйте!
Есть необходимость копировать таблицу из Word и вставлять в сообщение в теме (пользователи форума таковы, что они не будут заниматься правкой кодов, только пользоваться кнопочками в редакторе сообщения).
На данный момент что имеется:
1. Таблица вставляется (были дописаны bb коды table tr и td).
До прописывания новых bb кодов вставленная таблица отображалась так: [table][tr][td] [font=\'Times New Roman\', serif]Режим[/font] [/td]
2. При вставке таблицы, в которой есть объединенные ячейки и столбцы, они, соответственно, теряются (съедаются colspan и rowspan).
Можно ли с этим что-то сделать или, может быть, уже сделано, а я не нашла?
Заранее спасибо.

4X_Pro
Основатель проекта
Всего сообщений: 401
Зарегистрирован: 22 сент. 2014 г., 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 15

0
. Редактировалось 2 раза, последний — #2
По поводу пункта 2 можно сделать регулярное выражение с проверкой на наличие colspan и rowspan. Если бы вы выложили дописанный вами код для этих тегов, было бы проще что-то подсказать. Но выглядеть это будет примерно так:
preg_replace('\[td(\s+(col|row)span="\d+")?\]','<td$1>',$text);
Единственное что, такой код не сработает для ячеек, у которых есть colspan и rowspan одновременно.

Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

AlenaA
Новичок
Нет Всего сообщений: 2
Зарегистрирован: 25 сент. 2015 г., 12:01
Рейтинг пользователя: 0

0
. Редактировалось 1 раз, последний — #3
извиняюсь, что с нового аккаунта - не смогла вспомнить пароль и напоминалка не приходит на почту.

первое - спасибо за помощь!

так как не сильна в регулярных выражениях, то bb коды для отображения таблицы просто написала по шаблону, который был в коде файла bbcode:
self::$search[]='|\[table\](.*?)\[/table\]|s'; self::$replace[]='<div class="table_word"><table>$1</table></div>'; self::$search[]='|\[tr\](.*?)\[/tr\]|s'; self::$replace[]='<tr>$1</tr>'; self::$search[]='|\[td\](.*?)\[/td\]|s'; self::$replace[]='<td>$1</td>';
итог в прилепленном файле.
понимаю, что в диве отступ до таблицы - это лишние переводы строк, но не знаю, как убрать их.
это первая проблема.
вторая - отступ до дива (до красного) - тут вообще не понимаю, где искать решение проблемы.
очень прошу помощи.
Прикрепленные файлы:

4X_Pro
Основатель проекта
Всего сообщений: 401
Зарегистрирован: 22 сент. 2014 г., 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 15

0
#4
ElenaA, тогда код будет выглядеть так: self::$search[]='|\s*\[td(\s+(col|row)span="\d+")?\](.*?)\[/td\]\s*|s'; self::$replace[]='<td$1>$2</td>'; self::$search[]='|\s*\[tr\](.*?)\[/tr\]\s*|s'; self::$replace[]='<tr>$1</tr>';
\s* в начале и конце выражения, по идее, решит проблему лишних переводов строк.
Чтобы понять, откуда берется отступ, щелкните по нему правой кнопкой мышки и выберите "Просмотр кода элемента" (в Chrome или Яндекс.Бразуере, хотя в Firefox тоже есть аналогичная функция, но сделана хуже), окажется выделенным тот элемент, который отступ порождает. Там же можно попробовать редактировать CSS или посмотреть вложенные теги.

Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

AlenaA
Новичок
Нет Всего сообщений: 2
Зарегистрирован: 25 сент. 2015 г., 12:01
Рейтинг пользователя: 0

0
#5
спасибо Вам огромное!
всё получилось.
лишнее до таблицы тоже нашла, лишний float затесался

теперь следующая проблема
при вставке из word с разными шрифтами типа Times или Arial и т.п.
[table][tr] [td] [font='Times New Roman', serif]Первая [/font] [/td] [/tr] [/table]
преобразуется в, соответственно : [font=\'Times New Roman\', serif]Первая [/font]
никак не могу эти апострофы записать в регулярное выражение, чтобы шрифт был такой, как запланирован в word
основывалась на выражении из файла исходного:
self::$search[]='|\[font=([a-zA-Z\- ]+)\](.*?)\[/font\]|s'; self::$replace[]='<span style="font-family: $1">$2</span>';
понимаю, что
а) можно заставить пользователей пользоваться кнопочкой "снять форматирование", но пользователи - воспитатели детского сада, там реально проще подстроиться под их "ctrlC ctrlV"
б) надо изучать досконально регулярные выражения
но пока ни тот, ни другой вариант не доступны, к сожалению, посему прошу помощи!
заранее спасибо!

4X_Pro
Основатель проекта
Всего сообщений: 401
Зарегистрирован: 22 сент. 2014 г., 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 15

0
. Редактировалось 2 раза, последний — #6
Дело в том, что там на регулярные выражения накладывается синтаксис PHP, поэтому их нужно экранировать косой чертой (\) вот так:
self::$search[]='|\[font=([a-zA-Z\- \']+)\](.*?)\[/font\]|s'; self::$replace[]='<span style="font-family: $1">$2</span>';
И еще важный момент: пропускать можно только апострофы, двойные кавычки пропускать нельзя, так как это создаст проблему с безопасностью (появится возможность внедрять через этот тег JavaScript и устраивать XSS-атаки).

Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

_1_
Сомнительный тип
Всего сообщений: 346
Зарегистрирован: 14 окт. 2014 г., 09:11
Рейтинг пользователя: 17
Штрафных баллов: 1

0
. Редактировалось 5 раз, последний — #7
ElenaA написал(а):
Есть необходимость копировать таблицу из Word и вставлять в сообщение в теме

Самый простой способ вставить табличку в пост — через буфер обмена скопировать её из документа или из броузера. Этот способ и сейчас работает в режиме предварительного просмотра (). НО, к сожалению, при [Отправке] поста официальный движок этого форума эти табличные теги не сохраняет.

--

Есть два других способа публикации таблиц:
   

2) приаттачить к посту doc-файл (в котором таблица)
3) графический архивСпособ-3   — это действительно шикарный способ!
  • Он обеспечивает целостность данных: меняя первичные данные, можно редактировать конкретную табличку одновременно на всех сайтах, где она опубликована! К сожалению, первичную табличку на этом форуме не опубликуешь, т.к. здесь не поддерживается возможность замены аттачей (чтобы старые ссылки по-прежнему указывали на обновлённый файл)
  • Шикарное форматирование таблиц! bb-коды даже близко не могут предоставить таких возможностей!!
  • Из опубликованных таблиц можно через буфер обмена копировать не только текст ячеек, но и форматирование (в том числе, спойлеры: табличная ячейка кроме основного текста содержит дополнительное содержимое (в том числе, картинки). Спойлер можно разворачивать в любой части документа (обычно, его разворачивают вне таблицы, или, хотя бы, отдельной табличной строкой).
  • Таблицу можно масштабировать отдельно от текста сообщения.
  • Вместе с таблицей в архив можно поместить сопутствующую информацию (описание, ссылки, подпись, и т.д.
Просматривать rar-аттачи 'рисунков' можно разными способами... Например, скачать рисунок, и перетащить его на иконку архиватора


  (графический архив)



Прикрепленные файлы:

Одна страница
Распечатать

У вас нет прав для отправки сообщений в эту тему.