Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przekleństwa
psychol1986
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Witam, dodałem ostatnio do swojego bloga filtorowanie słów za przekleństwami. Jednak zmagam się jeszcze z jednym problemem, mianowicie jak ktoś wpisze "jakiskurwabluzg" jak mogę wyłapać to brzydkie słowo? Z góry przepraszam za przekleństwo ale niestety muszę jakoś zobrazować swój przykład. Bedę więdzięczny za pomoc.
Go to the top of the page
+Quote Post
daniel1302
post
Post #2





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Np za pomocą takiego wyrażenia
Kod
/^(.*)?(ku*wa)?(.*)?$/


Kod
if(preg_match('/^(.*)?(kurwa)?(.*)?$/', $tekst))
echo 'przekleństwo';


musisz zastosować preg_replace

Ale nie będe ukrywał, że nie bardzo potrafie posługiwać się tą funkcją. Musiałbym kombinować pare razy aby się nauczyć.

Ten post edytował daniel1302 17.02.2012, 23:18:31
Go to the top of the page
+Quote Post
psychol1986
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Witam, niestety nie znam się na wyrażeniach regularnych :/ ale to co podałeś nie dziala:

  1. if(preg_match('/^(.*)?(chuj)?(.*)?$/', 'jakiskurwabluzk')){
  2.  
  3. echo preg_replace('/^(.*)?(nic)?(.*)?$/', '***', 'jakiskurwabluzk');
  4. }


If przechodzi pomimo tego że nie ma tego wyrazu w szukanym słowie, i preg_replace też działa więc nie to chodzi. Idealnie też byłoby żebym mógł zastąpić tylko przekleństwo a nie cały wyraz.
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No tak, tylko że wtedy będziesz miał cyrki, gdy ktoś napisze np. cechuje.
Go to the top of the page
+Quote Post
Point1
post
Post #5





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 18.02.2012

Ostrzeżenie: (0%)
-----


Nie wiem, na ile to będzie w dobrym stylu, ale można by zrobić coś takiego:
  1. $arrayBluzgow = array('bluzg1', 'bluzg2');
  2. $bluzgiRE = implode('|', $arrayBluzgow);
  3. echo preg_replace('/[\w]*(' . $bluzgiRE . ')[\w]*/i', '***', $bluzgString);


A poza tym to witam (IMG:style_emoticons/default/tongue.gif)

PS. Żeby nie cenzurować "dowcipnych" wyrazów, można użyć lookbehinda: /(/?<!wyma)chuj/ dla wymachuje, /(?<!dow)cip/ dla dowcipów itd.

Ten post edytował Point1 18.02.2012, 19:20:08
Go to the top of the page
+Quote Post
konole
post
Post #6





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 21.03.2006
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Nic na siłę, zrób podstawy, a jak ktoś usilnie omija blokady, to się banuje. Bo inaczej, to nie wygrasz z wszystkimi przypadkami.

"kurwa, kierwa, kurffa, qrwa" i tak w nieskończoność można odmieniać, tylko po co?
Go to the top of the page
+Quote Post
lobopol
post
Post #7





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Dodatkowo dowolny wyraz można zapisać w taki sposób aby wyglądał identycznie, używając znaków z innych języków, są nawet stronki które ci podmieniają losowe znaki na ich odpowiedniki, w gruncie rzeczy jedyna opcja to banowanie.
Go to the top of the page
+Quote Post
Orzeszekk
post
Post #8





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

Ostrzeżenie: (0%)
-----


http://www.solmetra.com/scripts/regex/

powinno pomoc w konstruowaniu wlasnych wyrazen regexp.

konstruujesz wyrazenie i testujesz nimi różne frazy. Równie dobrze moglbys uzyc testow jednostkowych jesli umiesz z nich korzystać.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 00:26