В этом случае вам не нужно разрешать html и быть таким же доброжелательным, как браузеры. Ваша реализация может быть чрезвычайно строгой !
Когда вы очень строги, ваша работа по форматированию очень проста. Например, вы можете принять только этот синтаксис [tag=parameter]
и [/tag]
, где tag
может быть u,i,b,c
(c для цвета), а параметр может быть любым, кроме ]
или / и использовать специальные символы, которые не должны часто появляться в обычный текст.
Затем вы можете создать некоторые правила, назначить им приоритет и обработать текст на основе этого приоритета.
[код] предназначен для многострочных блоков (нельзя комбинировать с другими)
`для блоков встроенного кода (не может комбинироваться с другими)
*
для жирного текста
**
для курсивного текста
Теперь вам просто нужно найти теги в коде и соответствующим образом отформатировать текст:
<code>function textify(text) { return $('<div/>').text(text).html(); }
function formatText(text)
{
if (text == '') return '';
var start = text.indexOf('[code]');
var end = text.indexOf('[/code]', start);
if ((end > start) && (start >= 0))
{
return formatText(text.substring(0, start))
+ '<pre>'
+ text.substring(start + 6, end)
+ '
+ formatText (text.substring (end + 7));
}
text = text.replace (new RegExp ('(^ | \\ s |>) \\ * \\ * (\\ S. *? \\ S) \\ * \\ * ($ | \\ s | < ) ',' gim '),' $ 1
$ 2 $ 3 ');
text = text.replace (new RegExp ('(^ | \\ s |>) \\ * (\\ S. *? \\ S) \\ * ($ | \\ s | <)', 'gim') ), $ 1 <em>$ 2 $ 3);
вернуть текст;
}
А в ваших обработчиках событий:
$("#preview").html(formatText(textify(text)));