Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP & MySQL] Cenzura słów z bazy ...
Jawor
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 2
Dołączył: 1.10.2003

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


witam ... mam system komentarzy ... chce zrobic cenzure ...
problem moj jest nastepujacy :

komentarze sa pobierane z bazy ... slowa do cenzurowania rowiez ... probowalem to zrobic w taki sposob:

[php:1:d32b4a1ae2]
<?
// petla pokazywania komentarzy ... to dziala OK
while($c = mysql_fetch_array($comm)) {

echo $c['nick'];

echo ' - ';

echo $c['date'];

echo '<br>';

// tutaj chcialem zrobic aby mi cenzurowalo wpis ... probowalem zastosowac petle w petli ... ale tutaj jest problem gdyz nie cenzuruje textu :/ najprawdopodobniej nie pobiera slow z bazy bo jak usune petle i wstawie wlasne slowa to jesy OK ...
while($cen = mysql_fetch_array($cen2)) {
$c['text'] = str_replace ($cen['slowo'], $cen['zamien'], $c['text']);
}
echo $c['text'];

}
?>
[/php:1:d32b4a1ae2]

zapytania sa dobre ...

w bazie slowa mam w sposob:
id slowo zamiennik
1 bla ble
2 he heeh
Go to the top of the page
+Quote Post
Majdan
post
Post #2





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

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


Może :arrow: [manual:12b57a0b7e]str_replace[/manual:12b57a0b7e]().
[php:1:12b57a0b7e]<?php
// tu ma być tablica tekst z tekstem do zcenzurowania
$co = array("wulgaryzm1", "wulgaryzm2");
$x = "[cenzura]";
for ($i=0; $i<=count($tekst); $i++) {
echo str_replace($co, $x, $tekst[$i]);
}
?>[/php:1:12b57a0b7e]

Pisałem z palca więc coś mogło mi się machnąć.
Go to the top of the page
+Quote Post
Dravo
post
Post #3





Grupa: Zarejestrowani
Postów: 207
Pomógł: 0
Dołączył: 7.09.2003

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


Radziłbym cenzurować przed dodaniem, ponieważ robisz tą samą akcję tylko raz, natomiast gdybyś chcaił zaraz po pobraniu to każdy będzie musiał wykonywać fukcję cenzurującą.
Go to the top of the page
+Quote Post
cichy
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 197
Pomógł: 0
Dołączył: 9.09.2003
Skąd: z Marsa

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


a ja proponuje wybrac słowa cenzurowane tylko raz i wrzucić je do tablic:
np $co i $naco po czym używać ich w każdym poście i zmieniać te wyrazy.
poprzez normalnie str_replace()
Nie przedłuża to znacząco czasu wykonywania skryptu a na pewno zmniejsza ilosć zapytań pobierających cenzure z bazy przy każdym poście (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdro
Go to the top of the page
+Quote Post
Majdan
post
Post #5





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

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


Simpson, chodziło Ci chyba o taki kod jaki podałem :?:
Go to the top of the page
+Quote Post
cichy
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 197
Pomógł: 0
Dołączył: 9.09.2003
Skąd: z Marsa

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


Cytat
Simpson, chodziło Ci chyba o taki kod jaki podałem :?:

No coś w tym stylu.
Aczkowiek.
Gdyby zrobić to tak że do każdego wyrazu jest przypisany wyraz zastępczy to można by sie pozbyć pętli (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdro
Go to the top of the page
+Quote Post
Majdan
post
Post #7





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

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


Pętla służy do zamiany stringów, które sš przechowywane w tablicy, a wulgaryzmy zamieniane sš tylko raz dla każdego ze stringów.

Czyli o to Ci chodzi:
[php:1:a4abcaf6a9]<?php
$tekst = "wulgaryzm1 kjfaidoond wulgaryzm2";
$co = array("wulgaryzm1", "wulgaryzm2");
$x = "[cenzura]";
echo str_replace($co, $x, $tekst);
?>[/php:1:a4abcaf6a9]
Go to the top of the page
+Quote Post
cichy
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 197
Pomógł: 0
Dołączył: 9.09.2003
Skąd: z Marsa

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


NO dokładnie..
Nigdy nie bawiłęm sie ze str_replace w ten sposob że jest jedna tablica i jeden string.. i wszystkie elementy z tablicy zamieni na ten string więc nie wiedziałęm czy w tą strone zadziała (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdro
Go to the top of the page
+Quote Post
Jawor
post
Post #9





Grupa: Zarejestrowani
Postów: 73
Pomógł: 2
Dołączył: 1.10.2003

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


Cytat
Radziłbym cenzurować przed dodaniem, ponieważ robisz tą samą akcję tylko raz, natomiast gdybyś chcaił zaraz po pobraniu to każdy będzie musiał wykonywać fukcję cenzurującą.

Dobry pomysł ...
ale to i tak nie rozwiazuje mojego problemu ...
bo i tak mi zamienia tylko slowo ostatnio dodane do bazy ... o najwiekszym id ... :/

zapytania mam takie
[php:1:1b21600346]
<?
$cen1 = "SELECT * FROM censure";
$cen2 = mysql_query($cen1);
?>
[/php:1:1b21600346]
nastepnie petla pobieram slowa:
[php:1:1b21600346]
<?
while($cen = mysql_fetch_array($cen2)) {
$slowo = $cen[slowo];
$zamien = $cen[zamien];
}
?>
[/php:1:1b21600346]

i probuje zamienic ew. przeklenstwa na odpowiedni zamiennki
[php:1:1b21600346]
<?
$text = str_replace ($slowo, $zamien, $text);
?>
[/php:1:1b21600346]
ale tak jak jush pisalem zamienia mi sie tylko slowo ktore bylo najpozniej dodane do bazy...

pomocy :/
probowalem roznie to zmieniac ale nic nie wychodzi (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Majdan
post
Post #10





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

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


Nie bardzo wiem, o co Ci chodzi.
Podałem Ci już jak to ma wyglšdać.

O to Ci chodzi: :?:
[php:1:7e9b88d718]<?php
$co = array("wulgaryzm1", "wulgaryzm2"); // lista wulgaryzmow do zamiany
$x = "[cenzura]"; // na jaki wyraz ma zamieniac wulgaryzmy
$cen1 = "SELECT * FROM censure";
$cen2 = mysql_query($cen1);
while($cen = mysql_fetch_array($cen2)) {
echo str_replace($co, $x, $cen['slowo']);
}
?>[/php:1:7e9b88d718]
Go to the top of the page
+Quote Post
Jawor
post
Post #11





Grupa: Zarejestrowani
Postów: 73
Pomógł: 2
Dołączył: 1.10.2003

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


nie ...

chodzi mi o to zeby wulgaryzmy i slowa na jakie ma zamieniac byly pobierane z bazy ...

sa one tam umieszczone w postaci :

id slowo zamiennik
1 przeklenstwo cenzura
2 kurcze kur***
3 cholera cho****

kod ktory podalem wyzej dziala ale nie do konca gdyz zamienia mi tylko wulgaryzm na odpowiednie z najwiekszym id w bazie ... reszty nie zmienia :/
Go to the top of the page
+Quote Post
Majdan
post
Post #12





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

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


Już wiem o co Ci chodzi.
Zamień to:
[php:1:1eee9ecb5b]<?php
while($cen = mysql_fetch_array($cen2)) {
$slowo[] = $cen['slowo'];
$zamien[] = $cen['zamien'];
}
?>[/php:1:1eee9ecb5b]
Go to the top of the page
+Quote Post
Jawor
post
Post #13





Grupa: Zarejestrowani
Postów: 73
Pomógł: 2
Dołączył: 1.10.2003

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


dziala !! naprawde wielkie dzienki ...

PS: setny punkt pomocy (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) gratuluje (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Majdan
post
Post #14





Grupa: Zarejestrowani
Postów: 445
Pomógł: 0
Dołączył: 21.12.2003
Skąd: Tomaszów Lubelski

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


Nie ma za co! :wink:
PS. Dzięki.
Go to the top of the page
+Quote Post
cichy
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 197
Pomógł: 0
Dołączył: 9.09.2003
Skąd: z Marsa

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


i pomyśleć że ten pukcik bym zdobyłja gdybym odrazu podal swoje rozwiązanie zamiast wspierać Majdan'a (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
hehe

Pozdro
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: 21.12.2025 - 09:32