Korte inleiding van lang nieuwsbericht
Auteur: wouter - 16 januari 2005 - 17:52 - Gekeurd door: Dennisvb - Hits: 5453 - Aantal punten: 2.13 (4 stemmen)
Uitleg:
Deze functie is ideaal voor een nieuwssysteem. Je wilt namelijk niet hebben dat het je volledige homepage ingenomen door een nogal lang nieuwsbericht. Met deze functie bepaal je zelf hoelang het nieuwsbericht dat op de frontpage verschijnt mag zijn.
Gebruik:
<?
$nieuwsbericht = "Hallo. Dit is je lang nieuwsbericht. Om het nut ervan te weten te komen, heb ik wat zinnen nodig. Daarom deze zooi dus!";
inleiding ($nieuwsbericht, 20);
<? $nieuwsbericht = "Hallo. Dit is je lang nieuwsbericht. Om het nut ervan te weten te komen, heb ik wat zinnen nodig. Daarom deze zooi dus!"; inleiding ($nieuwsbericht, 20);
Weergave:
Citaat: Hallo. Dit is je lang nieuwsbericht.
Opgepast:
De leestekens (. ? !) mogen enkel gebruikt worden op het einde van de zin!!!
Opmerking:
Je kan dus na de uitvoer van de functie een linkje plaatsen met de vermelding: [link]Lees het volledige artikel/nieuwsbericht hier.[/link]
Laat me ff weten wat jullie ervan vinden.
|
Code: |
<?
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]); } } ?>
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|