Как бы вы поступили с автоматическим определением текстиля по сравнению с уценкой?
Я рассматриваю возможность поддержки обоих Текстиль и Уценка по текущему проекту. Я бы предпочел не заставлять пользователей выбирать то или иное. Есть ли способ автоматически определить, какой пользователь использует? Как бы вы поступили по этому поводу? Я хотел бы найти/разработать решение как на JavaScript, так и на PHP, чтобы я мог предоставлять предварительные просмотры в реальном времени, а также обрабатывать вводимые пользователем данные на стороне сервера.
3 answers
Учтите, что пользователи могут использовать в публикации только один конкретный элемент синтаксиса, поэтому вам придется проверять все. Поиск "h1". очевидно, работает только в том случае, если пользователь использует именно этот элемент.
Это довольно просто с такими вещами, как заголовки, но учтите, что форматы уценки *this*
как <em>this</em>
и Textile преобразуют это в <strong>this</strong>
вместо этого. Таким образом, у вас будут неоднозначные синтаксические конструкции, которые будут давать разные результаты на каждом языке.
Я бы предложил пойти с пользователем выбор. Попытайтесь выяснить, какой синтаксис обычно предпочитают ваши пользователи (или вы), установите флажок "использовать x вместо y" для тех, кто хочет выбрать другой вариант.
Это действительно не должно быть так сложно. Markdown не поддерживает следующий синтаксис;
h1. Header
p. Paragraph
... поэтому вы просто сканируете это, чтобы проверить, является ли это текстилем. Очень простое регулярное выражение для начала работы (сканирует строки, начинающиеся с hX. или п.) в коде PHP:
if (preg_match('/^(p|h[1-6])\. /m', $subject))
{
// Successful match
} else
{
// Match attempt failed
}
Вероятно, вы сможете написать свое собственное регулярное выражение для сканирования на предмет уценки.
Автоматическое обнаружение, я не знаю, оба основаны на "естественном" наборе текста.
Возможно, вы можете попросить пользователя выбрать формат с помощью пары переключателей или чего-то в этом роде.