![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 19.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
]witam
Pobralem sobie z sieci skrypt w PHP usuwający wulgaryzmy z tekstu "oczywiście przeklenstwa zamieniam na inne slowa"
w takiej formie skrypt działa świetnie i wstawia w miejsce przekleństwa (naprzykład ala (IMG:style_emoticons/default/smile.gif) ) ) gwiazdki. Jednak ja chciałbym baze powiekszyć i załadować plik wulgaryzmy.txt do tablicy link do pliku: uzylem kodowania iso. http://www.php-fusion.pl/forum/viewthread....;getfile=104605 skrypt poprawiony
No i po zaladowaniu pliku do tablicy skrypt nie dziala - nie sprawdza wyrazów i po 2 godzinach patrzenia co mogloby sie dział zgłupiałem i nie wiem. Plika mam zaladowany do tabliy poprawnie bo sprawdzalem. Pomóżcie P.S. Pewnie to jakaś błachostka przeszkadza ale niestety nie wiem w którym miejscu. Ten post edytował ppietras86 16.03.2010, 00:15:35 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Najprawdopodobniej jednak z ta tablicą jest coś nie tak. Pokaż może co wyświetla var_dump( $badwords ) w drugim przypadku, już po zmianach. Bo jeśli tam się przy konwersji do tablicy krzaczy, a na to wygląda, to jedynie poprawna konwersja do tablicy pomoże.
Inna sprawa to możliwy problem z kodowaniem... Funkcje z str_ w nazwie działają domyślnie z charsetem latin1, więc jeśli pchniesz tam utf-8 to przy polskich literach będziesz miał problem. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 19.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za tą funkcje. Nie znałem jej.
Nie ma krzaków ale zauważyłem co innego (IMG:style_emoticons/default/smile.gif) ) Wyświetla mi na przykład. [0]=> string(4) "ala " czyli kładzie tam spacje na sam koniec i juz wiem czemu mi nie chce z niczym porównać. Ale jak teraz tej spacji sie pozbyć? jak załadować ten plik bez spacji? z tego co wiem funkcja file() ładuje linijke tekstu po linijce i w taki sposób słownik wulgaryzmów jest napisany słowo1 słowo2 . . . Spróboje sie pobawić - moze mi sie coś uda. Oczywiście czekam na jakąs podpowiedz również |
|
|
![]()
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 ![]() |
To niekoniecznie musi być spacja. Może to by dowolny "biały znak", a więc tabulator poziomy, pionowy, znak końca linii czy wspomniana spacja. By je usunąć można użyć na każdym elemencie tablicy funkcję trim(), która właśnie do tego służy. Obstaję jednak, że jest tam znacznik końca linii, dlatego zastosuj do file() flagę FILE_IGNORE_NEW_LINES i dopiero gdy to nie da rezultatu zastosuj trim().
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 19.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
FILE_IGNORE_NEW_LINES pomogło częściowo. Już tłumacze bo we wczesniejszym poscie sie pomyliłem
Przed zastosowaniem FILE_IGNORE_NEW_LINES miałem postać [0]=> string(5) "ala " 5 znaków - a tutaj niby są 4 po zastosowaniu FILE_IGNORE_NEW_LINES mam [0]=> string(4) "ala " Ciekawa sprawa - zaintrygowało mnie to Dzięki wielkie za szybką odpowiedz - bawie sie teraz z Trim - dam znac co wyszło Już mi działa (IMG:style_emoticons/default/smile.gif) ) Dziękuję ślicznie (IMG:style_emoticons/default/smile.gif) Funkcja trim dała rady. Zrobiłem tak:
|
|
|
![]()
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 ![]() |
Zamiast sprawdzania ile jest tych słów i for mogłeś użyć foreach, które są przystosowane do obsługi tablic. Mogłeś też użyć jednej z funkcji: array_walk, array_map, array_filter.
EDIT: Zauważ też, że niepotrzebnie tworzysz drugą pętlę. Trim mogłeś wrzucić od razu do tej, która sprawdza. Miałbyś wtedy postać: Jak widzisz logika działań sprawia, że ilość niepotrzebnych działań skraca się znacznie. Na samej dodatkowej pętli trimującej, której się pozbyłeś zaoszczędzisz znacznie, gdy plik wulgaryzmów będzie zawierał znaczną ilość wpisów.
Powód edycji: [thek]: Małe uzupełnienie.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 19.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Masz racje. Czasem z tą moją logiką jest na opak (IMG:style_emoticons/default/smile.gif) ))))
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Logikę miałeś jak najbardziej poprawną. To co zrobiłem ja można już ująć jako optymalizacja. To już polega na analizie algorytmu pod kątem powtarzalności działań, stosowania określonych form typów danych, funkcji i ich redukcja (lub zwiększenie) by osiągnąć określony z góry rezultat czasowy, zajętości pamięci (często te dwa się wykluczają - rekurencja w przykładowo quicksort). To czy umiesz sobie z tym radzić i takie miejsca wyłapywać to w dużej mierze umiejętność analizy kodu i doświadczenie. A te z czasem i odpowiednio dużą ilością napisanego kodu są zdobywane.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 6 Dołączył: 10.08.2009 Skąd: Nowe Miasto Lubawskie Ostrzeżenie: (0%) ![]() ![]() |
Ja problem wulgaryzmów obsłużyłem w inny sposób (przedstawiam go w wersji oryginalnej więc przepraszam za użyte wulgaryzmy w tablicy). Stworzyłem tablicę najczęstszych słów występujących w wulgaryzmach i za pomocą funkcji stristr wychwytuję je a gdy występują w ciągu wtedy zwracam błąd:
Za pomocą tego kawałka kodu wychwytuję nawet najbardziej wyrafinowane wiązanki (IMG:style_emoticons/default/smile.gif) Ten post edytował bolverk 16.03.2010, 19:09:50 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 12.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Ja mam takie pytanie: jak wprowadzić to tego kodu:
plik (lub tablicę) z wyjątkami. Pytam, ponieważ skrypt jest tak bardzo precyzyjny, że po wrzuceniu go na serwer i załadowaniu strony zobaczyłem: Ja cię zaraz ***** za*******e ********** chu[cenzura]. I nie powinno cenzurować słowa zako*****. Poza tym jak widać 4 wulgaryzm, nie został zagwiazdkowany. Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 11:34 |