Tutorials Infos - Anleitungen - Hilfe - Dreamcodes
 

Längstes Wort

Ermittelt das längste Wort in einem Text
Script:

 <?php
/**
* Das längste Wort in einem Textabschnitt ermitteln.
*/


// Umlaute sollen natürlich mit berücksichtigt werden ...
setlocale(LC_ALL'de_DE@euro');


$text 'Das ist doch sehr einfach mit dem längsten Wort, oder?
Da kann man einen regulären Ausdruck benutzen.
Oder wir erzeugen ein Array durch extrahieren sämtlicher Worte aus diesem Text
und sortieren das Array einfach nach der Länge der Zeichenketten.
Oder wir wenden die Funktion array_filter an um alle Worte rauszuschmeißen die eine
vorgegebene Länge überschreiten. Solange der Text nicht zu lang wird sollte das 
auch einigermassen resourcenschonend funktionieren, aber wehe wenn man da 
z.B. Krieg und Frieden reinsteckt ...'
;


$max_length 12;

// per RegExp gucken ob ein so langes Wort enthalten ist ...

if (preg_match('#\w{'.$max_length.'}#'$text)){
printf ('Ja, da ist ein Wort mindestens %d Zeichen lang.'$max_length);
}

echo 
'<hr>';

// ok, warum nicht die Treffer gleich ausgeben ...

if (preg_match_all('#(\b\w{'.$max_length.',}\b)#'$text$matches)){
printf ('Ja, da ist mindestens ein Wort %d Zeichen oder länger. Und zwar:<ul><li>%s</li></ul>',
     
$max_length,
     
join('</li><li>'$matches[1])
    );
}

echo 
'<hr>';

// aber warum einfach wenn es auch umständlich geht ...

$words preg_split('#\W+#'$text);

$xxl array_filter($wordscreate_function('$v',"return strlen($v) >= $max_length;"));
printf ('Ja, da ist mindestens ein Wort %d Zeichen oder länger. Und zwar:<ul><li>%s</li></ul>',
    
$max_lengthjoin('</li><li>'$xxl)
    );


echo 
'<hr>';

// mit array_map bekommen wir leicht die Länge sämtlicher Strings ...

$lengths array_map ('strlen'$words);

printf('Das Längste Wort enthält übrigens %d Zeichen'max($lengths));


// jetzt wollen wir zum Abschluss noch alle Wörter hübsch geordnet haben ...

array_multisort($lengths,SORT_DESC,$words);

printf ('<h1>Alle Worte nach Länge absteigend geordnet</h1><ul><li>%s</li></ul>',
     
join('</li><li>',
     
$words)
    );

?>

 
ID: 1512
eingestellt am: 05.11.2007
Autor: Na
Status zum lesen: Gast
gelesen: 5793
Webseite: www.dreamcodes.com
[Drucken]