Intellect Board Pro
Система управления форумами
Объявление

30 ноября 2015 года выпущена окончательная версия Intellect Board 3.00! Перейти к скачиванию
Также доступен конвертор данных для IntB 2.22

Для получения новостей о новых версиях подписывайтесь на наши страницы ВКонтакте и в Twitter.

Привет, гость!

bb коды таблиц

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

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

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

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

0 +
22 сентября 2015, 15:49. Редактировалось 2 раза, последний — 23 сентября 2015, 19:49#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 +
25 сентября 2015, 12:10. Редактировалось 1 раз, последний — 25 сентября 2015, 12:11#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>';
итог в прилепленном файле.
понимаю, что в диве отступ до таблицы - это лишние переводы строк, но не знаю, как убрать их.
это первая проблема.
вторая - отступ до дива (до красного) - тут вообще не понимаю, где искать решение проблемы.
очень прошу помощи.
Прикрепленные файлы:
  • Untitled - 1.jpg

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

0 +
28 сентября 2015, 16:10#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 +
10 октября 2015, 11:36#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
Основатель проекта
Всего сообщений: 214
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

0 +
12 октября 2015, 18:00. Редактировалось 2 раза, последний — 12 октября 2015, 18:19#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_
Участник
Всего сообщений: 150
Зарегистрирован: 14 окт 2014, 09:11
Рейтинг пользователя: 15

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

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

--

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

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


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



Прикрепленные файлы:
  • Предварительный просмотр (кнопка).png

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

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

0: Контрольная точка "Конец инициализации". Время выполнения: 0.002. Запросов: 8, время запроса: 0.001 (44.22)%. Памяти использовано: 513688 байтов

0: Контрольная точка "Фиксация действия пользователя выполнена". Время выполнения: 0.002. Запросов: 10, время запроса: 0.001 (51.18)%. Памяти использовано: 514016 байтов

0: Контрольная точка "Основное действие выполнено". Время выполнения: 0.010. Запросов: 17, время запроса: 0.003 (31.46)%. Памяти использовано: 701464 байтов

0: Контрольная точка "Вспомогательные действия выполнены". Время выполнения: 0.011. Запросов: 19, время запроса: 0.003 (32.25)%. Памяти использовано: 709104 байтов

0: Контрольная точка "После срабатывания шаблонизатора.". Время выполнения: 0.015. Памяти использовано: 994152 байтов