Ik ben bezig met een nieuws systeem in php en mysql maar nu wil ik op de voorpagina de teksten inkorten tot een nog onbepaald aantal woorden en/of tekens! weet iemand hier iets op (ik weet dat het kan...)
Dan gaat er iets mis
<?
# hier gebeurt het namelijk:
return substr($tekst,100) . "..";
# hier stopt hij de tekst na 100 tekens en vervangt
# de rest door die twee puntjes
?>
Dus waarschijnlijk gaat er iets anders mis
ik gebruik zelf een andere functie, die ervoor zorgt dat er wordt afgerond op woorden. dus bijvoorbeeld :
"Hallo, mijn naam is phperik enzo"
kan NIET dit worden:
"Hallo mijn naam is phpe..."
maar WEL:
"Hallo mijn naam is..."
<?
function short($text, $max)
{
// is de text langer? dan het maximale?
if (strlen($text) >= $max)
{
// maak van deze string een array
$l = split(" ", $text);
$tmp = "";
// loop door de array heen
foreach ($l as $key => $value)
{
// als de lengte niet groter is dan het maximale of kan worden, dan toevoegen anders...
if (strlen($tmp) + strlen($value) < $max)
{
// voeg de text en spatie toe.
$tmp .= $value . " ";
}
else
{
// haal 1 spatie weg van de string en plak er .. aanvast.
$tmp = substr($tmp, 0, strlen($tmp) -1) . "...";
// is $tmp alleen .. dan pak de eerste $max carakters
if ($tmp == "..")
{
// geef deze waarden terug.
return substr($text, 0, $max) . "...";
}
else
{
// geef deze waarden terug.
return $tmp;
}
}
}}
else
{
// deze text is nu lang genoeg dus kan je gelijk weer terug geven.
return $text;
}
}
?>
Het gebruik werkt hetzelfde als die van Mitch, dus bijvoorbeeld:
<?
function short()
{
// DIT IS DUS DE BOVENSTAANDE FUNCTIE
}
$voorbeeld = "Ikke ga vanavond phpen met piet en jaap";
short($voorbeeld, 25);
// output: 'Ikke ga vanavond phpen...'
?>
Die van Mitch ziet er ook goed uit. Misschien werkt die van mij wel bij jou :)