Od jakiegoś czasu męczę się z kolorowaniem składni języka html. Na wstępie chciałabym powiedzieć, że wszystkie gotowe rozwiązania, jakie widziałam nie rozwiązują mojego problemu, a jeśli istnieje jakieś, które rozwiązuje z chęcią się zapoznam

Chciałabym pokolorować kod html w ten sposób, że błędne tagi (na razie jedynie błędnie zamknięte) nie są kolorowane wcale, a wyświetlane jako zwykły tekst. Wyglądać ma to tak:

Aktualnie doszłam do wyświetlenia czegoś w tym stylu i kompletnie nie mam pojęcia jak ruszyć dalej i usunąć błędne wyświetlanie atrybutów.

Linia odpowiedzialna za kolorowanie wartości atrybutów i przykładowy (inny trochę niż na obrazkach, bo z kolorowaniem samych wartości atryburów i krótszy) kod:
<?php $tekst = "<img src=\"alt.gif\" alt=\"kwa\"<span alt=\"lala\"></span>"; $tekst = preg_replace('/((.*?))(=\")(.*?)(\").*?/', '${1}${3}[span style="color: violet;"]${4}[/span]${5}', $tekst); ?>
Od razu mówię - tak, wiem, że str_replace mogę wziąć w tablicę i z pewnością tak zrobię. Wiem, że na tagi mogą być zamienione znaki wprowadzone przez użytkownika. Style zamienią się w przyszłości na klasy, ogólnie jest to jedynie zarys i z pewnością będzie poprawiony, tak samo jak będę myśleć nad bardziej efektywnymi sposobami przetwarzania i co ważniejsze bezpieczniejszymi, na dzień dzisiejszy chodzi mi jedynie o wyrażenie regularne.
Myślałam jeszcze nad automatycznym domykaniem niezamkniętych znaczników, ale to nie jest rozwiązanie, ku któremu chciałabym się skłaniać, wolałabym, żeby nieprawidłowo sformułowane tagi były traktowane po prostu jako zwykły tekst.
Próbowałam sprawdzać, czy ciąg kończy się znacznikiem zamykającym/otwierającym, ale działa to u mnie poprawnie tylko w przypadku jednego atrybutu. Jeśli to możliwe poprosiłabym o naprowadzenie na poprawny tok myślenia z tego względu, że wyrażenia regularne (nad czym ubolewam) nigdy nie były i nie są nadal moją mocną stroną.
Z góry dziękuję ^^