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

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

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

Author24 — интернет-сервис помощи студентам
Нужно мне сделать что-то типо парсера вики-разметки.
Скрипт должен читать текстовой файл из директории, прогонять его через парсер с заменой вики-разметки на 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
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
24.04.2013, 14:56 2
Велосипед. По-любому реализация этого дела на PHP уже существует. Осталось найти и использовать.
0
perezzloy
24.04.2013, 18:17 3
Ясное дело что велосипед, но это именно то, что нужно мне получить с нуля.
Ни больше ни меньше :(
Ну синтаксис очень прост и ограничен, а кроме того работа только с текстовыми файлами.

Обработать двойные теги разметки мне уже удалось.
Вот к примеру:
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.  ...
24.04.2013, 18:17
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2013, 18:17
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru