Wie kann ich das längste Wort in einer Zeichenfolge abrufen?Längstes Wort in einer Zeichenfolge
Eg.
$string = "Where did the big Elephant go?";
"Elephant"
Wie kann ich das längste Wort in einer Zeichenfolge abrufen?Längstes Wort in einer Zeichenfolge
Eg.
$string = "Where did the big Elephant go?";
"Elephant"
Schleife durch die Worte des Strings zurückzukehren, der längste Wort die Verfolgung so weit:
<?php
$string = "Where did the big Elephant go?";
$words = explode(' ', $string);
$longestWordLength = 0;
$longestWord = '';
foreach ($words as $word) {
if (strlen($word) > $longestWordLength) {
$longestWordLength = strlen($word);
$longestWord = $word;
}
}
echo $longestWord;
// Outputs: "Elephant"
?>
ein wenig effizienter gemacht werden kann, aber Sie bekommen die Idee.
Sie haben das in 15 Sekunden geschrieben ?! – JakeParis
@JMCCreative: Ich bin ziemlich genial. –
heh du hast fast genau das geschrieben was ich geschrieben habe ... aber schneller haha. – dqhendricks
Wie über diese - Split auf Räume, dann sortieren nach der String-Länge, die und greifen zuerst:
<?php
$string = "Where did the big Elephant go?";
$words = explode(' ', $string);
usort($words, function($a, $b) {
return strlen($b) - strlen($a);
});
$longest = $words[0];
echo $longest;
bearbeiten Wenn Sie Interpunktion ausschließen möchten, zum Beispiel: „Wo ging der große Elefant“, könnten Sie preg_split
verwenden:
$words = preg_split('/\b/', $string);
Scheint unnötig komplex für keinen Leistungsgewinn. –
@Tomalak In der Tat ist es ein bisschen langsamer. Dennoch ist es eine alternative, vielleicht sogar schönere Lösung. – lonesomeday
Hier ist eine andere Lösung:
$array = explode(" ",$string);
$result = "";
foreach($array as $candidate)
{
if(strlen($candidate) > strlen($result))
$result = $candidate
}
return $result;
Update: Hier ist ein weiterer noch kürzerer Weg (und dies ist auf jeden Fall neu;)):
function reduce($v, $p) {
return strlen($v) > strlen($p) ? $v : $p;
}
echo array_reduce(str_word_count($string, 1), 'reduce'); // prints Elephant
ähnlich wie bereits geschrieben, aber mit str_word_count
die Worte zu extrahieren (durch nur auf Leerzeichen aufteilend, werden Interpunktionszeichen auch gezählt):
$string = "Where did the big Elephant go?";
$words = str_word_count($string, 1);
function cmp($a, $b) {
return strlen($b) - strlen($a);
}
usort($words, 'cmp');
print_r(array_shift($words)); // prints Elephant
+1 für die Verwendung von 'str_word_count()'. Ich hätte die Funktion jedoch sofort in den Aufruf von 'usort()' platziert, um es kurz zu machen. Ich bin ein Sklave von jQuery Konventionen! – Sampson
@ Jonathan Sampson: Aber dann habe ich keinen Bezug auf das Array ... –
Ich mag nicht die Notwendigkeit, eine Funktion zu erstellen (und verschmutzen die Symboltabelle) obwohl! 'create_function' würde das beheben, aber dann sind die Dinge sehr ausführlich. –
Dieses ist eine ziemlich nützliche Funktion tion, wenn sie mit Text zu tun, so dass es eine gute Idee sein könnte, eine PHP-Funktion zu diesem Zweck zu erstellen:
diese Funktionfunction longestWord($txt) {
$words = preg_split('#[^a-z0-9áéíóúñç]#i', $txt, -1, PREG_SPLIT_NO_EMPTY);
usort($words, function($a, $b) { return strlen($b) - strlen($a); });
return $words[0];
}
echo longestWord("Where did the big Elephant go?");
// prints Elephant
Test hier: http://ideone.com/FsnkVW
Was Sie bisher versucht haben? Während jemand dir die Antwort geben kann, wirst du viel mehr lernen, wenn du zuerst etwas ausprobierst. (Und Sie werden wahrscheinlich viel bessere Antworten bekommen, wenn Sie zeigen, dass Sie darüber nachgedacht haben.) – JasCav