![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 18.10.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam
Mam shoutboxa i zrobiona cenzurę. Cenzuruję wpisane słowa ale chciałbym zrobić ze np po znalezieniu zakazanego słowa skrypt cenzurował całą wiadomość. Może ktoś pomóc? kod cenzury
Powód edycji: [blooregard]: Na przyszłość spójrz, co wrzucasz na forum, bo nie każdy tu jest pełnoletni [thek]: miałeś literówkę w $cen = array. Brak apostrofu zamykającego.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Spójrz na 4 parametr w str_replace. Jeżeli zwróci wartość większą od 0 to znaczy, że coś zostało ocenzurowane (czyli był wulgaryzm). W takiej sytuacji zwróć coś innego niż $a (np. pusty ciąg albo NULL).
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 18.10.2008 Ostrzeżenie: (10%) ![]() ![]() |
przy zmianie parametru a$ zmienia wszystkie wiadomości te dobre też no chyba że ja coś źle robię
jakieś dalsze propozycje? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Pytanie więc.. Czy Ty posyłasz do cenzury wszystkie wiadomości naraz? Bo z tego co piszesz tak wynika. Jeśli tak, to musisz zrobić rozgraniczenie na osobne wiadomości wpierw i dopiero je cenzurować. Inaczej nie wyłapiesz którą poddać całkowite cenzurze, a którą nie. Wtedy możesz zastosować wspomniany przez phpiona 4 parametr str_replace. Poza tym w podanym przez Ciebie kodzie zrobiłem mała poprawkę, bo przy przeklejaniu wcięło Ci zamykający apostrof za gwiazdkami. Miało być:
było -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 18.10.2008 Ostrzeżenie: (10%) ![]() ![]() |
tak wszystkie słowa razem, wygląda to tak:
z tym apostrofem to moderator jak usuwał przekleństwo to usunął też apostrof ![]() to co phpion napisał to nie rozumiem - nie umiem sobie z tym poradzić pomoże ktoś z tym rozdzieleniem bo patrze, czytam ale nie czaje zbytnio jak to zrobić można by to rozdzielić na 2 grupy wiadomości które cenzuruje całe oraz wiadomości które cenzuruje tylko dane słowo Ten post edytował marcin0077 15.03.2010, 23:05:33 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Nie chodzi mi tutaj o to czy wszystkie słowa razem, bo to "rozumie się samo przez się". Pytałem się czy wszystkie wiadomości z shouta, czy tylko od pojedynczego usera. To co opisał phpion to rzadko używany 4 parametr wspomnianej funkcji. Zawiera on informację ile razy str_replace się wykonało w przetwarzanym ciągu. Jeśli w wyniku masz 0 to super - brak wulgaryzmow. Jeśli jest coś więcej to znaczy że wulgaryzm był. Jeśli censor jest uruchamiane dla każdej wiadomości z osobna to w wyniku wystarczy, że do zmiennej $a podepniesz informację, że wiadomość zawiera wulgaryzm i została ocenzurowana. jeśli censor od razu wszystkie wiadomości sprawdza to musisz tak kod zmodyfikować, by rozpoznawać osobne wiadomości.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 11 Dołączył: 11.10.2004 Skąd: 3c Ostrzeżenie: (10%) ![]() ![]() |
hmm a ja nie rozumiem czemu cenzurowac cala widomosc jesli raz ktos uzuyje niecenzurowanego slowa, czasami trzeba ( ...;] ) no a jesli portal tak bardzo nie pochwala tego typu lacin niech funduje to tylko wspominanym str_replace..
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 10 Dołączył: 30.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pozwoliłem sobie zmierzyć się z problemem cenzury i osobiście rozwiązałbym to w ten sposób:
Przykład użycia:
Wynik:
Moim skromnym zdaniem jest to rozwiązanie proste i bardzo elastyczne i prawdopodobnie wydajniejsze od twojego. Polecam ![]() Ten post edytował Methestel 16.03.2010, 03:13:54 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jego rozwiązanie jest dobre... dla języka angielskiego (chodzi o końcówki)
![]() ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 18.10.2008 Ostrzeżenie: (10%) ![]() ![]() |
hmm a ja nie rozumiem czemu cenzurowac cala widomosc jesli raz ktos uzuyje niecenzurowanego slowa, czasami trzeba ( ...;] ) no a jesli portal tak bardzo nie pochwala tego typu lacin niech funduje to tylko wspominanym str_replace.. chodzi mi bardziej o cenzurę adresów www dlatego jak ktoś wpisze coś co zawiera http, www, .pl, .com, .eu itd. to żeby cenzurowało cała wiadomość |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
No to tu już najlepsze wyrażenia regularne wyszukujące adresu
![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 18.10.2008 Ostrzeżenie: (10%) ![]() ![]() |
No to tu już najlepsze wyrażenia regularne wyszukujące adresu ![]() tylko w tym momencie jak będzie taki tekst: Super Gry, Programy, Filmy, Porno tylko w http://www.jakas_strona.pl to wymoderuje sam adres a opis zostanie a poza tym w cenzurze mogę sobie zrobić różne kombinacje takie jak: www, w_w_w, w w w, w.w.w, w,w,w itd. bo takich kombinacji też będzie a nie wiem jak to z tymi wyrażeniami hmm? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 10 Dołączył: 30.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jego rozwiązanie jest dobre... dla języka angielskiego (chodzi o końcówki) ![]() ![]() Regexp-y wykonywane są na całej wypowiedzi, nie na poszczególnych wyrazach dzięki czemu ilość regexp-ów zmniejsza się (a nie zwiększa) i to dość znacznie. Powiedzmy że mamy wypowiedz złożoną z 100 wyrazów. Cenzurujemy powiedzmy 5 wyrazów. U kolegi wykona się łącznie 500 regexp-ów (zagnieżdzona pętla foreach) u mnie za to tylko 5. Ustawianie tego jest tak samo trudne jak u kolegi. Jeśli chcę cenzurować n słów to będę miał n wpisów. W przykładzie poza cenzurowaniem pokazane są też inne możliwości jakie daje moje rozwiązanie tj. zamiana tekstu, poprawianie typowych błędów. W bardzo łatwy sposób można też dodać to czego kolega potrzebuje czyli cenzurowanie linków w tekstach. No i na koniec to na czym koledze zależało czyli licznik ocenzurowanych słów. Proponuje jeszcze raz przeanalizować obydwa rozwiązania. |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Tak, ale u Ciebie także. Jakim cudem? Ano takim, że ma on przykładowo X słów z Y końcówkami. Słówko "cod" zostanie sprawdzone pod kątem występowania jako słowa:
cod, coded, codes, coding, cods, coder, coders A co u Ciebie? Ty każde z nich piszesz jako osobny regexp (!) Nadal nie widzisz, że oba rozwiązania wcale nie są bardzo inne? Ja patrząc z boku tak to widzę. Ty jako użytkownik swojego rozwiązania tego nie zauważasz, zachłystując się rzekomo mniejszą ilością regexp. Ale to tylko złudzenie. Napisz teraz swoje tak, by objęło owo X wyrazów wraz z Y możliwymi końcówkami swoją metodą ![]() ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 18.10.2008 Ostrzeżenie: (10%) ![]() ![]() |
te końcówki można chyba zlikwidować łatwo i nie będzie z "regexpami" problemu
Ten post edytował marcin0077 16.03.2010, 22:09:53 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 10 Dołączył: 30.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak, ale u Ciebie także. Jakim cudem? Ano takim, że ma on przykładowo X słów z Y końcówkami. Słówko "cod" zostanie sprawdzone pod kątem występowania jako słowa: cod, coded, codes, coding, cods, coder, coders A co u Ciebie? Ty każde z nich piszesz jako osobny regexp (!) Nadal nie widzisz, że oba rozwiązania wcale nie są bardzo inne? Ja patrząc z boku tak to widzę. Ty jako użytkownik swojego rozwiązania tego nie zauważasz, zachłystując się rzekomo mniejszą ilością regexp. Ale to tylko złudzenie. Napisz teraz swoje tak, by objęło owo X wyrazów wraz z Y możliwymi końcówkami swoją metodą ![]() ![]() No i dalej nie przyjrzałeś się dokładnie rozwiązaniom ![]() Cytat Ty każde z nich piszesz jako osobny regexp (!) Oh, rly?
albo jeszcze lepiej (to załatwia wszystkie końcówki)
i sprawa załatwiona. Nie muszę rozbijać wypowiedzi na tablicę wyrazów przy pomocy explode() i nie muszę generować za każdym razem wyrażenia regularnego. Jeśli nadal chcesz się kłócić co jest szybsze możesz to przetestować. Jeśli nie będzie Ci się chciało a dalej będziesz pisał że w w moim rozwiązaniu wykonuje się więcej regeqpów po powrocie z roboty Ci to sam udowodnie ![]() Cytat Napisz teraz swoje tak, by objęło owo X wyrazów wraz z Y możliwymi końcówkami swoją metodą winksmiley.jpg Pochlastasz się przy pisaniu regexp numer 432 winksmiley.jpg Proszę bardzo:
Jakoś można się wyrobić nawet w jednym regexpie ![]() Może po prostu nie do końca zdajesz sobie sprawę jakie możliwości dają wyrażenia regularne :/ Ten post edytował Methestel 17.03.2010, 17:53:32 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 18.10.2008 Ostrzeżenie: (10%) ![]() ![]() |
odświeżam gdyż nadal nie wiem jak zrobić cenzurę na całe wiadomości
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.07.2025 - 07:55 |