Archief - PHP: Weergeven van eerste woorden

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bertold

Legacy Member
Bestaat er een functie om van een value die uit een database is gehaald enkel de eerste XX woorden weer te geven?

Bijvoorbeeld van een tekst van honderd woorden enkel de eerste tien in een string stoppen en te echo'en

Alvast bedankt

killgore

Legacy Member
PHP:
function first_words($string,$cwords)
{
$len=0;
for($i=0;$i<$cwords;$i++)
{
    $len = strpos($string,' ',$len);
}
if($len===false)
{
    return $string;
}
else
{
    return substr($string,0,$len);
}
}
cwords = het aantal woorden ;). Der bestond denk ik efficiëntere methode om de zoveelste spatie te vinden, ma kherinner me et nie meer :).

edit:
PHP:
function first_words($string,$cwords)
{
if($cwords>=str_word_count) return $string;
$posarray = array_flip(str_word_count($string,2));
$words = str_word_count($string,1);
$len=$posarray[$words[$cwords]];
f
    return substr($string,0,$len);
}

Bertold

Legacy Member
ik neem aan dat het dit moet zijn?
PHP:
function first_words($string,$cwords){
	if($cwords>=str_word_count) return $string;
	$posarray = array_flip(str_word_count($string,2));
	$words = str_word_count($string,1);
	$len=$posarray[$words[$cwords]];
    return substr($string,0,$len);
}
maar dan werkt het niet :$
geen syntax errors ofzo maar ik krijg gewoon weer het hele bericht te zien als ik bevoorbeeld maar 5 woorden wil :s

Bertold

Legacy Member
kheb et nu veranderd naar:
PHP:
function first_words($string,$cwords){
	if($cwords >= str_word_count($string)) return $string;
	$posarray = array_flip(str_word_count($string,2));
	$words = str_word_count($string,1);
	$len=$posarray[$words[$cwords]];
    return substr($string,0,$len);
}

maar nu verandert er wel iets maar de hele lange berichten wordt toch nog niet ingekort :s
zie : http://taison.mine.nu/cdg/index.php?p=kalender&a=1

killgore

Legacy Member
bt belgium zei:
ik neem aan dat het dit moet zijn?
maar dan werkt het niet :$
geen syntax errors ofzo maar ik krijg gewoon weer het hele bericht te zien als ik bevoorbeeld maar 5 woorden wil :s
nja, kweet niet, kheb dit gauw gecode hier op het forum toen je erom vroeg. Ik kap meestal af na x aantal tekens en dan de eerste spatie, iets "complexter" read more algoritme dus ;).

edit: khebbet hier getest en dat werkt perfect (let wel trouwens, str_word_count is pas vanaf php 4.3 beschikbaar, ma dan zoude normaal foutmelding krijgen):
PHP:
<?php 
function first_words($string,$cwords){
    if($cwords >= str_word_count($string)) return $string;
    $posarray = array_flip(str_word_count($string,2));
    $words = str_word_count($string,1);
    $len=$posarray[$words[$cwords]];
    return substr($string,0,$len);
}
echo first_words("dit is een test",2);
?>
leverde "dit is" op als echo ;).
Anyway, nu hebbek de functie toch, zal wel van pas komen (aangezien dit er mij nog iets vrij snel uit ziet voor korte tekste :)).

taLa.

Legacy Member
PHP:
function firstWords($string, $amount){
	$words = explode(' ', $string);
	$words = array_slice($words, 0, $amount);
	$newstr = implode(' ', $words);
	return $newstr;
}
echo firstWords("Foo to the bar yo fo shizzle ma nizzle", 5); // Foo to the bar yo

Nee ? :)

killgore

Legacy Member
taLa. zei:
PHP:
function firstWords($string, $amount){
		$words = explode(' ', $string);
		$words = array_slice($words, 0, $amount);
		$newstr = implode(' ', $words);
		return $newstr;
	}
	echo firstWords("Foo to the bar yo fo shizzle ma nizzle", 5);

Nee ? :)
yup :), zal nog +/- snelste zijn als uw tekst niet extreem lang wordt :).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan