Niewielki parser markdowna - coś mi nie idzie z wyrażeniami reguralnymi

0

Potrzebuję niewielki parser markdowna. Wiem, że jest sporo gotowców, ale mi potrzebny taki który dopisze do htmla konkretne klasy czy style (nic skomplikowanego, zawsze te same). Ale powiem szczerze że coś mi nie do końca to idzie.

W $text mam tekst który ma być przetworzony, mam też dwa (na początek) wyrażenia które mają złapać nagłówki H1 i H2 i próbuję za pomocą preg_replace podmienić co trzeba w stringu:

$text = preg_replace('/^(#{1})( *\S+ *)(#{1})/','<h1 style="margin-bottom: 60px">$2</h1>', $text);
$text = preg_replace('/^(#{2})( *\S+ *)(#{2})/','<h2 style="margin-bottom: 40px">$2</h2>', $text);

Czyli (o ile dobrze rozumiem regexpy na początku linii ma być jeden #, potem opcjonalnie spacje, potem wszystkie znaki poza specjalnymi, potem znów opcjonalna spacja i znów jeden lub dwa #. Sprawdziłem na regexr.com - działa. W php nie działa.

Co robię nie tak?

1

Zobacz niedawny wątek o podobnej treści: https://4programmers.net/Forum/1672324

0

Dziękuję, przydał się bardzo.

Niestety, wyłazi moja znajomość tylko podstaw wyrażeń regularnych :)

O ile z większością rzeczy sobie poradziłem, o tyle utknąłem na pozornie banalnym problemie: jak 'złapać' czyste paragrafy. Czyli pominąć wszelkie linie zaczynające się od #, wyliczenia, wypunktowania itp, tylko sam goły tekst rozdzielony dwoma enterami?

1

Wrzuć jakiś przykład tekstu i dokładnie co ma wyłapać. Pisałeś już że wyrażenia łapią Ci odpowiedni tekst na jakimś portalu. Wrzuć też link do takiego testera.

0

OK, sznurek do testera z przykładowym tekstem: klik

Póki co działają nagłówki:

/(#{2})([\S\d ]+)(#{2})/
/(#{1})([\S\d ]+)(#{1})/

Pogrubienie, pochylenie:

(\*{2})([\S\s]*?)(\*{2})
(\*{1})([\S\s]*?)(\*{1})

1 użytkowników online, w tym zalogowanych: 0, gości: 1