Zdravim potreboval by som poradit chcem urobit filter nadavok vo fore a neviem ako na to mne by stacilo keby daky uzivatel nieco napisat do pola Textarea a potom to odoslal a ono by to skontrolovalo ci tam nie su nadavky... Dik.
pomoci while() a eregi():
$nadavky = array('vole', ':<|>:');
$i=0;
while($i<count($nadavky)):
$i++;
$text = eregi_replace($nadavky[$i], '*CENZURA*', $text);
endwhile;
snad to je vse... muzes si to pak upravit, ze ty sprosty slova muzes nacitat z db
Dik ja si to uz budem vediet upravit aby t tahalo z DB. Oprav ma ak sa mylim ale ono to nahradi to sproste slovo, slovom CENZURA ?
A to teraz mamkde umiestnit tento script netreba nejak odkazovat na tu premennu $nadavky (asi nie?), to mam umiestnit iba pred nacitanim do DB (myslim ze to mam umiestnit pred tym ako bude cenzurovany prispevok umiestneny do DB, aby bol s cenzurov aj v DB...) alebo kde?
nejdriv nacti ty veci z DB a pak je vyarrayuj do promenny $nadavky
JA to mam takto a nechce to fungovat:
include("spojenie.php"); // vloženie súboru s parametrami spojenia
$conn=MySQL_Connect ($host,$user,$passwd); //nadviazanie spojenia
mysql_select_db ($db,$conn); // výber databázy
$result=MySQL_Query("SELECT nadavky FROM nadavky2 ",$conn); // výber údajov z databázy
$nadavky=MySQL_Result($result,'nadavky'); //načítanie jednotlivých
$nadavky = array('hajzel', 'somar', 'imbecil', 'vole', 'bullshit' ); //tu to mozem tahat z DB
$i=0;
while($i<count($nadavky)):
$i++;
$text = eregi_replace($nadavky[$i], '*CENZURA*', $text);
endwhile;
echo "<p align='justify'>$text</p>"; // výpis komentárov
echo "<hr>"; // deliaca čiara
MySQL_Close($conn); // ukončenie spojenia
A MySQL my vypisuje:
Warning: eregi_replace(): REG_EMPTY in /disk1/home/ic/excyklistika/www/nadavky/vypis.php on line 17
Co sa mi velmi nezda podla mna je premenna plna a aj tabulka...
Tabulka je takato:
CREATE TABLE nadavky2 (
id int (11) NOT NULL auto_increment,
nadavky text,
PRIMARY KEY (id)
)
Vdaka za poradenie
no, ono to bude asi tim, ze tomu souboru musis udelat jednu vec. Musis na nej posilat formular a v poli text to udela ereg_replace.
Ty to mas jako aby to vypsalo komentare.. Kde inicializujes onen $text? Zkus to prendat na
$text=MySQL_Result($result,'nadavky'); //načítanie jednotlivých
btw ty komentare musis vypisovat pres while() nebo for()...
Zkusim to prepsat do OK stavu a dam to sem (bude to chvilku trvat, nez to pochopim, jak to ma bejt)
<?php
include 'spojenie.php'; // vlozi soubor s parametry prihlaseni k DB
$pripoj = mysql_connect($host,$user,$passwd); //spoji se s mysql
$vyberdb = mysql_select_db($db,$conn); // vybrani db
$query = "SELECT * FROM nadavky2"; // výber údajov z databázy
$result = mysql_result($result); //načítanie jednotlivých
$query = "SELECT * FROM komentare"; // výber údajov z databázy
$result = mysql_result($result); //načítanie jednotlivých
$nadavky = array('hajzel', 'somar', 'imbecil', 'vole', 'bullshit' ); //tu to mozem tahat z DB
while($vypis=mysql_fetch_array($result)):
$i=0;
while($i<count($nadavky)):
$i++;
$vypis['text'] = eregi_replace($nadavky[$i], '*CENZURA*', $vypis['text']);
endwhile;
echo "<p align='justify'>$vypis['text']</p>"; // výpis komentárov
echo "<hr>"; // deliaca čiara
endwhile;
MySQL_Close($conn); // ukončenie spojenia
?>
Nazev sloupce v tabulce komentare musi byt text, jinak si to uprav
zareaguju na Datum: 05. 09. 2005 16:13
zde je problém jasný: $i++ se dělá před provedením příkazu eregi, v tom je ten kámen úrazu. zatímco $nadavky[1] sice existuje, zapomnělo se na $nadavky[0] a přebyde $nadavky[5], která už je mimo definované pole a tudíž je prázdná. A proto ta chyba. $i++ dej až po eregi
A jinak taková filozofická otázka: K čemu je ten filtr dobrý? Někdy takové slovo nemusí být nutně nadávkou (co když bude řeč o hospodářských zvířatech) a jindy zase se objeví velice hrozná nadávka, která není v seznamu, a je udělána tím způsobem, že bude rozprostřena do několika vět, např.
"Ti jsi tak blbý, že tvá inteligence se pohybuje někde mezi absolutní nulou a inteligencí vypnuté pračky. Tvá máma je tak tlustá, že když jede vlakem, musí mít pro sebe extra vagón. A tvůj otec v jednom kuse chlastá tak, že připomíná ožralé prase."
Nebylo by prostě lepší nadávky necenzurovat a případně takové příspěvky mazat?
Dik za radu ale aj tak velmi to nechce fungovat vypisuje to stale array vzdy ked pridam zaznam a pri tom v DB je je normalny zaznam ale ked ho to vypisuje tak je to len proste array no nic nevadi... pokusim sa to urobit nejak cez if alebo tak nejak s replace alebo ako to (proste s nahradenim retazca)
Nípal > ... filozofická otázka:
a naopak, mám skušenost z questbookem pro kni-hovn-u :-)
Já tohle taky dělal jen tak pro legraci do chatu, a tak jsem zjistil že český jazyk má snad nevyčerpatelnou zásobu sprostých slov a ještě od každého 7 pádu!
Když si chce člověk zanadávat, tak si cestu vždycky najde... :-)