Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
perezzloy

Парсер вики-разметки

23.04.2013, 18:48. Показов 2411. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно мне сделать что-то типо парсера вики-разметки.
Скрипт должен читать текстовой файл из директории, прогонять его через парсер с заменой вики-разметки на html-теги. Сама разметка под спойлером.
Кликните здесь для просмотра всего текста

Обработка текста:
//курсив//
**полужирный**
--зачеркнутый--
__подчеркнутый__
++подстрочный++
^^надстрочный^^
~Неформатированный, так можно убрать любое форматирование~
=Заголовок первого уровня=
==Заголовок второго уровня==
===Заголовок третьего уровня===
====Заголовок четвёртого уровня====
=====Заголовок пятого уровня=====
\\ разрыв строки
%%Этот текст не будет отформатирован.%%
>>Выравнивание по центру<<
<<Выравнивание по ширине>>
>>Выравнивание по правому краю>>
<<По левому краю<<

Простой список (также, как с нумерованным):
**
* 1 элемент списка
* 2 элемент списка
* 1й подэлемент
* Подэлемент
**

Нумерованный список:
##
# 1.
# 2.
# 2.1.
# 2.1.1.
# 2.1.1.1.
# 2.1.1.1.1. (5й уровень вложенности максимальный)
##

Таблицы:
#=заголовок таблицы
| а | строка | таблицы
| б | строка | таблицы
#=

Обработка блоков:
{{Оглавление}} оно цепляет заголовки и подзаголовки как якоря (как в медиа-вики)

>>>цитата<<<

<[полная отмена валидации, то есть исполняются скрипты]>

---- и больше - горизонтальная полоса <hr />

[[тип|адрес_ссылки|текст ссылки]] в адресе может быть и якорь. типы: web - http:// ; # -якорь ; img ; file. Картинка не будет работать обычной ссылкой!
Текст ссылки равен подсказке (alt).


Понимаю что видимо нужно действовать через
PHP
1
preg_replace
, но с регулярками у меня проблемы. Не могу разобраться, примеров не хватает. Поэтому прошу помочь, может быть совместными усилиями что-нибудь получится.

Как я понимаю, мне нужно для каждого случая создать паттерн и замену.
Вот для примера нужно
HTML5
1
=любой текст=
заменить на
HTML5
1
<h1>любой текст</h1>
Еле-еле сделал так:
PHP
1
;$text=preg_replace('/[?]*={1}.+={1}[?]*/','это не смог', $text);
Помогите с этим, пожалуйста.
Лучше примеры с подробным разъяснением.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2013, 18:48
Ответы с готовыми решениями:

Организация ООП в генераторе вики-разметки
Хочу написать полноценный генератор вики-разметки с помощью методов ооп . Хорошее начало - пол дела сделано. Написание кода отложил на лето...

Попадание в вики
Хочу попасть в вики, нужна помощь, понятное дело на платной основе. Точнее разместить ссылку в вики, чтобы ее не удаляли модераторы. Пишите...

Вики разметка
Все привет. Хотел спросить, можно ли вместо таблицы сделать сетку? Просто есть турнирная таблица, в ней вписаны команды. А теперь...

2
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
24.04.2013, 14:56
Велосипед. По-любому реализация этого дела на PHP уже существует. Осталось найти и использовать.
0
perezzloy
24.04.2013, 18:17
Ясное дело что велосипед, но это именно то, что нужно мне получить с нуля.
Ни больше ни меньше :(
Ну синтаксис очень прост и ограничен, а кроме того работа только с текстовыми файлами.

Обработать двойные теги разметки мне уже удалось.
Вот к примеру:
PHP
1
2
Для =Заголовок=
$line=preg_replace("!=(.*?)=!si","<h1>\\1</h1>",$line);
Подобное подойдет ко многим тегам, но мне до сих пор не ясно как быть, например, со списком
HTML5
1
2
3
4
5
6
#
 #
  #
   #
    #
# ну и т.д.
Что соответствует
HTML5
1
2
3
4
5
6
1.
1.1.
1.1.1.
1.1.1.1.
1.1.1.1.1
2.  ...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2013, 18:17
Помогаю со студенческими работами здесь

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

Вики для изучения DirectX
Если кому интересно, я открыл вики для изучения DirectX - http://ru.directx.wikia.com/ Любой желающий может свободно писать свои статьи и...

Вики-разметка вконтакте, в группе
Всем привет! Я вапще не понимаю как делать вики-разметку хочу её сделать!! Подскажите как?** Может какую литературу посоветуете?*(для...

Как можно добавить видеоролик на вики?
Нужно добавить один хороший видеоролик в википедию. Проблемы с модераторами беру на себя, думаю они пропустят, т.к. ролик в тему. Вопрос...

Генерация вики из книги (набора статей)
Звучит нелепо, но... есть книга - в книге полно терминов, описание терминов и тому подобное сгенерировать из этого всего страницы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru