Grafische interesse |
|
ik heb zover ik weet niets aangepast
<?
function inleiding($text, $max_tekens) {
$leestekens = array(".", "?", "!"); // array met alle leestekens
$vervanging = array("*[1]*.", "*[2]*.", "*[3]*."); // array met de codering&vervanging van de leestekens.
$code= array("*[1]*", "*[2]*", "*[3]*"); //array met de zuivere codering nodig om op het laatste de leestekens correct terug te plaatsen
// eerst vervangen we alle leestekens door de codering(met een . na zodat we die dan kunnen opsplitsen in zinnen)
$gecodeerde_text = str_replace ($leestekens, $vervanging, text);
$array = explode(".", $gecodeerde_text);
// nu hebben we het aantal zinnen nodig
$tel_zinnen = count($array);
// vervolgens moeten we weten hoeveel tekens er in elke zin staan
$tekens_per_zin= array();
$tekens_per_zin[-1] = $max_tekens;
for ($zin = 0; $zin < $tel_zinnen; $zin++) {
$tekens_per_zin[$zin] = strlen ($array[$zin]);
}
// nu hebben we de leestekens per zin, we hebben uiteraard nog nodig hoeveel er nog mogen tot we het ingegeven limiet hebben overschreden.
$aantal_overgebleven_tekens = array();
$aantal_overgebleven_tekens [-1] = $max_tekens;
for ($zin=0;$zin<$tel_zinnen;$zin++) {
$vorige_zin = $zin-1;
$aantal_overgebleven_tekens [$zin] = $aantal_overgebleven_tekens [$vorige_zin]-$tekens_per_zin[$zin];
}
// nu gaan we de zin selecteren waar het limiet overschreden word (waar de waarde 'overgebleven tekens' <0)
function negatief($array) {
return ($array <= 0);
}
$teveel_tekens = array_filter($aantal_overgebleven_tekens , "negatief");
$tekens_laatste_zin = max($teveel_tekens);
// de key die bij die zin hoort.
$key = array_search($tekens_laatste_zin, $aantal_overgebleven_tekens );
// alle zinnen (met die waar het limiet bereikt wordt) weergeven [b]nadat[/b] we de toegepaste codering terug hebben vervangen door leestekens
for ($zin = 0; $zin <= $key; $zin++) {
$inleiding[$zin] = str_replace ($code, $leestekens, $array[$zin]);
echo $inleiding[$zin];
}
}
?>
<? function inleiding($text, $max_tekens) { $leestekens = array(".", "?", "!"); // array met alle leestekens $vervanging = array("*[1]*.", "*[2]*.", "*[3]*."); // array met de codering&vervanging van de leestekens. $code= array("*[1]*", "*[2]*", "*[3]*"); //array met de zuivere codering nodig om op het laatste de leestekens correct terug te plaatsen // eerst vervangen we alle leestekens door de codering(met een . na zodat we die dan kunnen opsplitsen in zinnen) $gecodeerde_text = str_replace ($leestekens, $vervanging, text ); $array = explode(".", $gecodeerde_text); // nu hebben we het aantal zinnen nodig $tel_zinnen = count($array); // vervolgens moeten we weten hoeveel tekens er in elke zin staan $tekens_per_zin= array(); $tekens_per_zin[-1] = $max_tekens; for ($zin = 0; $zin < $tel_zinnen; $zin++) { $tekens_per_zin[$zin] = strlen ($array[$zin]); } // nu hebben we de leestekens per zin, we hebben uiteraard nog nodig hoeveel er nog mogen tot we het ingegeven limiet hebben overschreden. $aantal_overgebleven_tekens = array(); $aantal_overgebleven_tekens [-1] = $max_tekens; for ($zin=0;$zin<$tel_zinnen;$zin++) { $vorige_zin = $zin-1; $aantal_overgebleven_tekens [$zin] = $aantal_overgebleven_tekens [$vorige_zin]-$tekens_per_zin[$zin]; } // nu gaan we de zin selecteren waar het limiet overschreden word (waar de waarde 'overgebleven tekens' <0) function negatief($array) { return ($array <= 0); } $teveel_tekens = array_filter($aantal_overgebleven_tekens , "negatief"); $tekens_laatste_zin = max($teveel_tekens); // de key die bij die zin hoort. $key = array_search($tekens_laatste_zin, $aantal_overgebleven_tekens ); // alle zinnen (met die waar het limiet bereikt wordt) weergeven [b]nadat[/b] we de toegepaste codering terug hebben vervangen door leestekens for ($zin = 0; $zin <= $key; $zin++) { $inleiding[$zin] = str_replace ($code, $leestekens, $array[$zin]); } } ?>
|