2013-09-07 4 views
1

Я пытаюсь показать текст вики в HTML в своем приложении (используя cakephp). Я использую это выражение для <h4>,<h5>,<h6>регулярное выражение для Wikitext в HTML

'/^==== (.*) ====$/' 
    => '<h4>\1</h4>', 
    '/^===== (.*) =====$/' 
    => '<h5>\1</h5>', 
    '/^====== (.*) ======$/' 
    => '<h6>\1</h6>', 

[http://www.wikipedia.org Wikipedia] будет показано, как <ahref="www.wikipedia.org">Wikipedia </a>

[5|Text] покажет как <a href="http://fillpage/5/page_slug">Text</a>

[[6#HeadingB|Text ]] будет показано, как <ahref="http://fillpage/6/page_slug#HeadingB>Text</a>

[[6#HeadingB]] будет показано, как <a href="http://fillpage/5/page_slug">PageTitle</a>

[media:631|Description|Position] будет показано, как <img class="position" src="http://fullpath/lang_code/631.jpg"> Описание

Я wan't, чтобы узнать, как сделать такое регулярное выражение для ссылок (так же, как Wikipedia показывает.), Как сделать это. И как совместить пробел с двумя скобками для ссылок.

+0

Поспорим, у вас есть никель, там есть библиотека, которая сделает это за вас, а не изобретает колесо. –

+0

Не для синтаксиса MediaWiki, на самом деле. Парсер, который он использует, настолько сумасшедший, что единственная реализация - это PHP в самой MW. – duskwuff

ответ

1

Match \[(.*?) +(.*)\]

и заменить: $ 2

или если вы используете PREG в PHP

Go для этого:

'/\[(.*?) +(.*)]$/'

и принимать их с обратной косой чертой например: '<a href="\1">\2</a>' в массиве как значение для шаблона выше как ключ.

Это было сделано для википедии. Вы можете перейти к http://gskinner.com/RegExr/ и использовать ссылки на шаблоны в правом столбце.

Надеюсь, это поможет.

Смежные вопросы