Pozbywanie się wulgaryzmów

Pozbywanie się wulgaryzmów
0

Siemka.
Jestem na etapie pisania moduły z komentarzami do artykułów w moim serwisie. Aby ograniczyć hołotę chcę nie dopuszczać do używania słów powszechnie uznanych za wulgarne i banować takich trolli.

Moje pytanie jest następujące. Jakie znacie sposoby na wyłapywanie wulgaryzmów z dodanej treści?
Na tę chwilę mam coś takiego, ale nie wydaje mi się to zbyt bystre ani wydajne:

Kopiuj
        $brzydkie_slowa = [tablica z mnóstwem brzydkich słów];
        $komentarz = mb_strtoupper($komentarz , 'UTF-8');

        foreach($brzydkie_slowa as $przeklenstwo){
            if(stripos($komentarz , $przeklenstwo) !== false){
               return true;
            }
        }
        return false;
 
Trebuh
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 4 lata
  • Lokalizacja:okolice Łodzi
0

Nie robiłem nigdy nic takiego ale wydaje się to być dobrym rozwiązaniem jak na początek. Należy jedynie pamiętać o tym żeby w tablicy brzydkie_slowa były wszystkie odmiany tych słów. Gdyby to był jakiś prosty np. system bloga to można dodać coś takiego że autor (strony) musi sam zaakceptować komentarz.


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.
Tumeg
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:687
0

Porządnie można to zrobić np. za pomocą wyrażeń regularnych.

Trebuh
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 4 lata
  • Lokalizacja:okolice Łodzi
1

@Tumeg: Nie widzę sensu pchać się w wyrażenia. Ten sposób można "udoskonalić" sprawdzając jedynie czy początek jest taki sam jak początek danego słowa co zapobiegnie dużej ilości elementów w tablicy (odmiany). Chociaż ma to też wady - np. sprawdzamy część kur algorytm uzna to za wulgaryzm a słowo będzie kura.


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.
0

Witam. Mogę powiedzieć gdzie widziałem zestaw wyrazów wulgarnych jako plik txt co można sobie użyć ?!

w AllPlayer nie wiem czy w każdej wersji ale w starszej sprzed dwóch lat bodajże było w pliku txt

poza tym mając zestaw wyrazów to ja nie miałbym żadnego problemu z ich użyciem w dowolnym zastosowaniu...

być może niezbyt pojąłem zapytania w rzeczywistości właściwie chwilowo tylko chciałem jedynie podzielić się listą wulgaryzmów podaną wyżej w programie polskiego programisty... Dzięki Mu za to bo przynajmniej mi oszczędził trochę pracy...

Zatem pomyślałem, iż warto wskazać namiar na ten wartościowy plik txt ( niezaszyfrowany !!! póki co... )

0
Tumeg napisał(a):

Porządnie można to zrobić np. za pomocą wyrażeń regularnych.

Myślałem o tym, ale raczej mam wątpliwości czy to będzie porządnie. Co to w ogóle znaczy 'porządnie' w tym przypadku? To co mam w tej chwili też jest porządnie bo wyłapie mi każdy wulgaryzm jaki wrzucę w tablicę. Interesuje mnie raczej jak to zoptymalizować.

Tumeg
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:687
0

No właśnie - każdy jaki sobie wrzucisz w tablicę, a co jeśli na środku popularnego słowa na k wstawię sobie gwiazdkę ?

edytowany 1x, ostatnio: Tumeg
Trebuh
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 4 lata
  • Lokalizacja:okolice Łodzi
0

IMO jak jest wulgaryzmy zakropkowany to nic takiego.


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.
Tumeg
Zależy dla kogo.
flowCRANE
Wulgaryzm sam w sobie jest wulgarny, nawet jesli jest zakropkowany czy zagwiazdkowany, więc nie należy go używać - i tak wszyscy wiedzą co jest pod maską, więc zakrywanie jest jednoznaczne z niezakrywaniem; Przynajmniej ja to tak odbieram, bo jesli ktoś napisze mi, że ch** jestem, to gwiazdki nic nie zmienią - obraził mnie i już :P
msm
Hmn, ogólnie nie lubię cenzury/wymuszania pisania w jakikolwiek sposób (i tak naprawdę, jak pisze FP, mała różnica czy są gwiazdki czy nie - znaczenie to samo). Ale niektórych wulgaryzmy w postach rażą, więc fajnie jak chociaż są wykropkowane.
0

@furious programming od takich kwiatków to trzeba mieć już moderatora. Nie wiem czy uda się napisać takie wyrażenie które wyłapie mi ch** czy mat****bca :)

krzysiek050
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 4 lata
  • Postów:1272
0

Ten mechanizm jest spoko system wczesnego wykrywania. Warto dodać opcję dla moderatora która umożliwia rozszerzanie słownika słów wulgarnych w trakcie moderowania.

Jeżeli masz system reputacji, jak np. na tym forum, to możesz przyznawać punkty za poprawnie zgłoszone przez użytkowników posty z wulgaryzmami. Wtedy dużo szybciej odnajdziesz takie posty i zbanujesz autorów.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Tuchów
  • Postów:12166
0

Wulgaryzmów jest za dużo, żeby skutecznie pozbywać się wszystkich, do tego ciągle ktoś wymyśla nowe :]

Na część przekleństw można napisać regexa - wszystkie słowa zawierające podciąg kurw można spokojnie oznaczyć jako wulgaryzm; Każda odmiana powinna zostać wyłapana, bo niewulgarne słowa takiego podciągu nie zawierają (mam nadzieję); Co do innych to też trzeba by pogłówkować i wyłapywać przynajmniej te najpopularniejsze, czy to regexami czy słownikiem;

To i tak nie zmienia faktu, iż moderatorzy przydadzą się, bo użytkownicy są zbyt cwani i zawsze uda im się obejść cenzor;


red label - skusiłbym się na podciągi jeba, jebi i jebn :D


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
0

Może ma ktoś jeszcze jakiś dobry podciąg do sprawdzenia?

Trebuh
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 4 lata
  • Lokalizacja:okolice Łodzi
0

Weź kartkę i rozpisz sobie wszystko.


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.
0

Pisałem swojego czasu taki skrypt komentarzy, posiedziałem trochę i zrobiłem sobie funkcję, która wyłapuje przekleństwa i jeśli przy dodawaniu komentarza wykryje to każe userowi poprawić komentarz.

Taka funkcja:

Kopiuj
		static function sprawdzWulgaryzmy($tekst){
			
			$przeklenstwa = array(
									'bit(h|ch)', 
									'(ch|h)(w|.w)(d|.d)(p|.p)', 
									'(|o)cip', 
									'(|o)(ch|h)(u|ó)j(|a)', 
									'(|do|na|po|do|prze|przy|roz|u|w|wy|za|z|matko)jeb(|a|c|i|n|y)', 
									'(|do|od|o|s|wy|za)pieprz(|e|n|on|a|y)', 
									'(|do|na|naw|od|pod|po|prze|przy|roz|spie|roz|poroz|s|u|w|za|wy)pierd(a|o|u)', 
									'fu(ck|k)', 
									'(|u)dup', 
									'(|po|s|w|za)(ku|q)r(w|ew|e)(i|y|a|s|o)', 
									'k(ó|u)tas', 
									'(|po|wy)rucha', 
									'motherfucker', 
									'piczk', 
									'(|w)pi(z|ź)d'
								);
			$buffor = false;
			foreach ($przeklenstwa as $item){
				if (preg_match('@'.$item.'([^ ]+)?@si', $tekst)){
					$buffor = true;
					break;
				}
			}
			#return substr(preg_replace( $przeklenstwa, '#cenzura#', ' '.$tekst ), 1);		//	zamiana przekleństw 
			return $buffor;
		}

@woolfik: Ta funkcja nie przepuści wyrażeń z Twojego postu wyżej :)

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)