• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Cenzor wulgaryzmów

Object Storage Arubacloud
+1 głos
694 wizyt
pytanie zadane 29 czerwca 2018 w PHP przez niezalogowany
Ma ktoś jakiś krótki prosty skrypt cenzurujący wulgaryzmy na stronie, które dołącza się w pliku txt? bez js?

Wypróbowałam dziesiątki z google i żaden nie działał, nawet ze zgapianymi z for poprawkami, już mi mózg paruje.

Pomocy

2 odpowiedzi

+1 głos
odpowiedź 29 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)

Jeśli masz te zakazane słowa w pliku to najprościej wg mnie pobrać te dane i zapisać sobie w jakieś np. tablicy, a następnie po prostu walidować czy ciąg znakowy zawiera słowa zawarte w tej tablicy. Jeśli wystąpi taki wyraz to możesz np. napisać sobie drugą funkcję "obrabiającą" te zakazane słowa i ustawiać w niej albo ich wyrzucenie (czy zwrot pustego stringa w miejsce znalezionego) albo jakąś zamianę, np. w stylu "dupa" -> "****", "d***" itp. Dałoby Ci to pewną uniwersalność w walidacji i modyfikacji danych.

Przy użyciu regexp trzeba tylko uwzględnić dwie kwestie:

  1. kwestia wydajności jeśli tych słów jest bardzo dużo... bo regexp zawierałby wiele dopasowań alternatywnych, chyba, że wydajność nie jest tu priorytetem (np. jeśli jest to jakaś postedycja czy walidacja, na którą user może chwilę poczekać).
  2. regexp trzeba by bardzo dokładnie otestować, głównie w zakresie wyłapywania ciągów zawierających np. polskie znaki diaktryczne czy różne symbole specjalne itp.

To czy zrobisz to w JS czy w innym języku to już zależy od tego w jakim środowisku pracujesz. Jeśli ma to być client-side to najlepiej w JS, pobierając listę słów np. przy użyciu Ajax, np. jako ładowana po wczytaniu contentu strony (jakby w tle) itp. Jeśli w back-endzie no to znowu pytanie czy piszesz w JS, PHP, Java itp. Język nie ma tu większego znaczenia.

komentarz 30 czerwca 2018 przez niezalogowany
regexp sprawia, że nawet fragmenty przekleństw wypisanych w tablicy są wychwytywane, nawet gdy to tylko fragmenty normalnych słów :/
komentarz 30 czerwca 2018 przez marcin99b Szeryf (82,180 p.)
a kto powiedział że nie możesz w regexp zdefiniować że na końcu słowa musi być
\n lub spacja lub znak typu kropka, przecinek, nawias, znak specjalny
komentarz 30 czerwca 2018 przez niezalogowany
nie ogarniam w ogóle php bo się uczę na razie html i css, ten regexp to czarna magia:D
2
komentarz 30 czerwca 2018 przez marcin99b Szeryf (82,180 p.)
to nie php, regex jest w prawie każdym języku programowania

jak bawisz sie we frontend szybko będzie konieczny js, gdzie js się przyda

co prawda znajomość regexp nie jest konieczna, ale bardzo dużo potrafi ułatwić przy walidacji (nie musisz szukać w internecie kodu do skopiowania i wiesz co co robi)
0 głosów
odpowiedź 29 czerwca 2018 przez Assasz Nałogowiec (30,460 p.)

Najprostszy sposób (ale niekoniecznie wydajny), jaki mi przyszedł do głowy - bez żadnych regexów:

$forbiddenWords = ['brzydkie', 'slowa'];
$text = 'losowy tekst zawierający brzydkie slowa';

foreach ($forbiddenWords as $word) {
	if (strpos($text, $word)) {
		$text = str_replace($word, '***', $text);
	}
}

echo $text;
// wyświetli 'losowy tekst zawierający *** ***'

Jeśli chcesz przechowywać zakazane słowa w oddzielnym pliku txt, to możesz użyć funkcji file, która pobierze zawartość pliku do tablicy (wtedy każde słowo musi być od nowej linii, aby funkcja potraktowała je jako oddzielne elementy tablicy).

komentarz 30 czerwca 2018 przez niezalogowany
niestety nie cenzuruje, wyświetla treść z $text

ani nie zmienia słów opublikowanych już na stronie
komentarz 30 czerwca 2018 przez Assasz Nałogowiec (30,460 p.)

Testowane na stronie phptester.net

Podobne pytania

0 głosów
1 odpowiedź 181 wizyt
pytanie zadane 30 czerwca 2018 w JavaScript przez niezalogowany

92,615 zapytań

141,465 odpowiedzi

319,779 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...