ketvirtadienis, gruodžio 20

preg_match_all ir strlen: komentare bbkodu paryškintų simbolių skaičiaus ribojimas

preg_match_all ir strlen: komentare bbkodu paryškintų simbolių skaičiaus ribojimas

Pastaruoju metu radau šiek tiek laiko perprogramuoti kai kurias savo svetaines, ypač dėl to, kad tenka nuolatos kovoti su spamu. Gyvenime daugiau nebenaudosiu ne savo kurtų skriptų, ypač tokių kaip svečių knygos ar šiaip komentarai, nes trinti viagrų reklamas iš pradžių dar būna juokinga, bet jau ilgainiui nebe labai.
Dabar kūriau komentarų rašymui BBCode palaikymą, bet reikėjo sugalvoti, kaip išvengti, kad lankytojas neparašytų viso komentaro paryškintai. Šis skriptas patikrina, ar komentare yra paryškinimų, jei yra daugiau nei vienas, visus juos suklijuoja, pašalina tarpus ir apskaičiuoja, koks yra visų paryškintų simbolių skaičius. Jei daugiau nei kokie 40-50, turbūt reikia nebeleisti įrašyti tokio komentaro, nes jeigu visas komentaro tekstas yra paryškintas - tai vėlgi beveik spamas.



$text = "Perlhosting.net - tai [b]nemokama[/b] failų [b]talpykla[/b], skirta bet kokių failų [b]laikymui[/b] ir [b]atsisiuntimui[/b].";

echo "$text";

if (preg_match_all("#\[b\](.*?)\[/b\]#msi", $text, $oo, PREG_PATTERN_ORDER)) {
$aptikta = substr_count($text, '[b]');
for ($num=0; $num<$aptikta; $num++ )
{
$rodom .= $oo[0][$num];
}
$rodom = str_replace(" ", "", $rodom);
echo "$rodom";

$kiekatimti = $aptikta*7;
$bold_ilgis = strlen($rodom)-$kiekatimti;
if ($bold_ilgis>40)
{
echo "Per daug paryškintų simbolių ($bold_ilgis).";
exit;
}
} else {
echo "Paryškintų simbolių nėra... Tikrinam toliau.";
}

?>




Jei ką nors domina smulkios programavimo paslaugos, galit parašyti man adresu: svetaines[x]gmail.com
 
eXTReMe Tracker