Лучший способ обработки больших строк текста, поступающих в базу данных? - PullRequest
1 голос
/ 23 февраля 2009

В прошлом я построил ряд решений, в которых люди вводят данные через веб-форму, применяются проверки достоверности, в некоторых случаях регулярное выражение, и все хранится в базе данных. Эти данные затем используются для вывода вывода на другие страницы.

У меня есть особый случай, когда пользователь хочет скопировать / вставить ОГРОМНОЕ количество текста (несколько абзацев с различными заголовками, ссылками и т. Д.) - как лучше всего справиться с этим, прежде чем он попадет в базу данных, чтобы обеспечить лучший результат, когда он должен вернуться?

Пока что лучшее, что я придумал, это прикрепить все выходные данные из этих полей в тегах PRE и использовать регулярные выражения для добавления ссылок, где это необходимо. У меня есть база данных вместе со списком специальных ключевых слов, которые должны быть выделены жирным шрифтом, или к ним применены другие стили, которые отлично работают. Так что я могу сделать эту работу, используя эти подходы, но мне просто кажется, что, возможно, есть гораздо более изящный способ сделать это.

  • Николай

Ответы [ 2 ]

2 голосов
/ 23 февраля 2009

Существует множество способов форматирования текста для вывода. Вы можете просто использовать теги pre, как вы упоминали (если вы беспокоитесь о переносе, свойство CSS white-space также поддерживает значение pre-wrap, но поддержка браузера для этого в настоящее время отрывочна в лучшем случае ).

Существует также большое количество языков разметки, которые можно использовать для более сложных параметров форматирования (некоторые из них перечислены здесь ). Сам переполнение стека использует Markdown , что мне лично очень нравится.

Однако, поскольку данные вставляются из другого источника, язык разметки может мешать форматированию текста - в этом случае вы можете использовать свое собственное решение, возможно, используя регулярные выражения и функции, такие как htmlentities и nl2br.

Что бы вы ни решили, я бы порекомендовал сохранить исходные данные в базе данных, чтобы вы могли в любой момент изменить свои процедуры форматирования задним числом.

0 голосов
/ 23 февраля 2009

Если вы ожидаете хорошего форматирования, вам, вероятно, следует использовать редактор WYSIWYG. Эти редакторы создают словесные панели инструментов, которые дают (надеюсь) правильную (x) HTML-разметку, которая может быть непосредственно сохранена в текстовом поле в вашей базе данных. Вот пара примеров:

FCKeditor - Огромное количество опций / инструментов

Tinymce - Хорошая альтернатива.

Уценка - Что использует stackoverflow.com

И FCKeditor, и Tinymce были тщательно протестированы и доказали свою надежность. У меня нет опыта работы с уценкой, но она кажется солидной.

Я всегда ненавидел теги форматирования «форума», такие как [code], [link] и т. Д. Stackoverflow и другие показали, что предоставление открытого редактора wysisyg безопасно, надежно и очень просто в использовании. Просто возьмите вывод, который он вам дает, запустите его через какую-нибудь escape-функцию, чтобы проверить наличие инъекций, xss и т. Д. И сохраните в текстовом поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...