Zobacz to :D
http://google.pl
https://4programmers.net
A tak poważnie pisząc, to można płatać figle takim mechanizmem. W sekcji "Ostatnia aktywność" i w powiadomieniach jest tylko tekst opisu a nie ma adresu. Ktoś może wejść przez powiadomienie i kliknąć na szybko.
Mechanizm działa dość długo i nikt się nie skarżył.
@PerlMonk: Oczywiście nie wiem co poeta miał na myśli, ale zgaduje że chodziło bardziej o to że przekleństwa w opisach linków nie są cenzurowane, w przeciwieństwie do przekleństw normalnie w postach
Rzeczywiście, takie słowa powinny podlegać cenzurze, a jak widać - w pewnych okolicznościach to się nie dzieje. Moim zdaniem to jest bug.
Cenzura jest pomijalna w linkach czy znacznikach <img>
bo może rozwalać po prostu link tak więc zostało to zrobione specjalnie.
@Adam Boduch: wszystko fajnie, ale markdownowych linków nie da się zepsuć:
[Japierdole kurwa Kurwa CHUUUJ Ale mu Pan powiedział jebać](https://www.youtube.com/watch?v=dQw4w9WgXcQ)
Cenzura może i powinna dotyczyć sekcji pomiędzy znakami []
, czyli tego, co do URL-a nie należy. I w sumie tak samo powinno być w przypadku znaczników []()!
czy <img>
, jeśli chodzi o atrybut z tytułem odnośnika/obrazka.
Markdown jest najpierw konwertowany do HTML. Parser cenzury działa na samym końcu. Jest on oparty o regexp, może przynieść więc nieporządne "efekty uboczne" ;) Przypominam, że w module cenzury czasami zastępujemy dane słowa/wyrażenia kodem HTML. Jak widzicie, nie jest to takie proste do zrobienia jeżeli porównamy czas który trzeba na to poświęcić a efekt w postaci braku paru brzydkich słów w linkach ;)
@Adam Boduch: czyli podsumowując - nie jest to bug, ale celowe działanie, a w przypadku stwierdzenia takich treści trzeba je raportować, a któryś z moderatorów ręcznie je wyczyści. Dobrze zrozumiałem?
Tak :)
Adam Boduch napisał(a):
Markdown jest najpierw konwertowany do HTML. Parser cenzury działa na samym końcu.
No to niech działa na samym początku — i po problemie. ;)
Wówczas w kodzie markdown trzeba by pomijać wszystkie wystąpienia kodu źródłowego, czy też obrazków. O wiele łatwiej to zrobić mając kod HTML. Działa to tak:
$text = $this->hashBlock($text, ['code', 'a']);
$text = $this->hashInline($text, 'img');
Przed uruchomieniem parsera cenzury, wszystkie tagi <a>
, <code>
czy <img>
są zastępowane hashem. Po zakończeniu prac, hashe są zastępowane oryginalnymi znacznikami HTML. Teraz zrób to samo w kodzie markdown, gdzie dla bloku kodu, backticków czy obrazków jest inne formatowanie...