tre passi avanti uno indietro per umiltà
Ecco un interessante script php attraverso il quale è possibile chiudere i tag (bbcode) lasciati aperti da qualche utente distratto. Il funzionamento dello script è molto semplice: esso conta quante volte è stato aperto un tag e quante volte è stato chiuso, se la differenza è maggiore o uguale ad 1, allora almeno un tag è stato lasciato aperto, e quindi quest’ultimo verrà chiuso automaticamente dallo script.
vedi sorgentestampainfo
1 function count_t($tag, $text) { $count = 0; for($i=0;$i<=strlen($text) - strlen($tag);$i++) { $s = substr($text, $i, strlen($tag)); if($s == $tag) $count++; } return $count; } Codice PHP: $tag = array( ";", ";" /* tag_aperto;tag_chiuso */ ); $my_text = "Il testo [b]è in grassetto"; foreach($tag as $t) { $g = explode(";", $t); $diff = count_t($g[0], $my_text) - count_t($g[1], $my_text); if($diff >= 1) { for($j = 0;$j < $diff;$j++) $my_text .= $g[1]; } } echo $my_text;
tre passi avanti uno indietro per umiltà
lo so hai ragione , non si capisce niente , adesso lo sistemo cosi' è piu' chiaro
function count_t($tag, $text)
{
$count = 0; for($i=0;
$i<=strlen($text) - strlen($tag);$i++)
{
$s = substr($text, $i, strlen($tag));
if($s == $tag) $count++;
}
return $count;
}
$tag = array( ";", ";" /* tag_aperto;tag_chiuso */ );
$my_text = "Il testo [b]è in grassetto"; foreach($tag as $t)
{
$g = explode(";", $t);
$diff = count_t($g[0], $my_text) - count_t($g[1], $my_text);
if($diff >= 1)
{
for($j = 0; $j < $diff;$j++) $my_text .= $g[1];
}
}
echo $my_text;
}
Ultima modifica di Luigi; 04/02/2011 alle 21:28
tre passi avanti uno indietro per umiltà