Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Kirosanasuodatin

Tomppa32 [19.11.2009 17:46:56]

#

PHP:llä toteutettu kirosanasuodatin, jonka voi laittaa sensuroimaan esim. vieraskirjan viestejä.
Funktio siis vaihtaa kirosanat haluttuun muotoon esim. "shit" --> "sh*t". Lisää voi lisätä tarvittaessa.

Suodatus funktio

<?php
///////////////////////////////////////////////////
//                                               //
// Kirosanasuodatin 1.0                          //
//                                               //
// Tompz                                         //
// http://koti.mbnet.fi/tompz/                   //
//                                               //
// Saa levittää ja muokata vapaasti, kunhan tämä //
// tekstilaatikko säilyy muuttumattomana!        //
//                                               //
///////////////////////////////////////////////////

function clean($teksti, $laske = false){

$explicion_search = array( //Etsittävät kirosanat
	'/vittu/is',
	'/vitu(.*?)/is',
	'/pask(.*?)/is',
	'/shit(.*?)/is'
);

$explicion_replace = array( //Sensuroidut kirosanat
	'v*ttu',
	'v*tu$1',
	'p*sk$1',
	'sh*t$1'
);

$count = 0;
//Lasketaan kirosanojen määrä ja sensuroidaan ne
$teksti = preg_replace($explicion_search, $explicion_replace, $teksti, -1 , $count);
//Jos halutaan vain laskea, palautetaan numero, muuten palautetaan teksti
if ($laske) return $count; else return $teksti;
}
?>

Käyttöesimerkki 1

<?php
$viesti = "Vittu, mitä paskaa saatana!";
$c = clean($viesti, true); //"true" arvo laskee kirosanojen määrän
echo "Viestissä on $c kirosanaa.<br>\n<br>\n";
echo clean($viesti); //Pelkällä tekstillä sensuroi kirosanat
?>

Käyttöesimerkki 2

<?php
function tarkista($teksti){
$c = clean($teksti, true);
if ($c > 1){  //Jos enemmän, kuin 1 kirosanaa, suodatetaan ne
	if ($c > 2){ //Jos enemmän, kuin 2 kirosanaa, bannataan käyttäjä
		//$teksti = clean($teksti);
		$teksti = "BANNED!";
		//ban();
	}else{
		$teksti = clean($teksti);
	}
}
return $teksti;
}
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta