答えて
ループを返すために、
$string = "Where did the big Elephant go?";
、これまでの最長の単語を追跡する:
<?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"
?>
はもう少し効率的に行うことができますが、あなたが得ますアイディア。あなたは、たとえば、句読点を除外したい場合は
<?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;
編集:「どこスペースに分割し、ソート文字列の長さによって、最初をつかむ - これについて
あなたは15秒でそれを書きましたか? – JakeParis
@JMCCreative:私はかなり素晴らしいです。 –
あなたはほとんど正確に私が書いたものを書いた...しかし、より速い笑。 – dqhendricks
方法?大きな象を行ってきました」、あなたはpreg_split
を使用することができます。ここでは
$words = preg_split('/\b/', $string);
性能向上のために不必要に複雑に見えます。 –
@Tomalak実際、かなり遅いです。それでも、これは代替案、恐らくもっときれいなソリューションです。 – lonesomeday
は別のソリューションです。
$array = explode(" ",$string);
$result = "";
foreach($array as $candidate)
{
if(strlen($candidate) > strlen($result))
$result = $candidate
}
return $result;
アップデート:ここでは別のさらに短い道(とこの1つは間違いなく新しいです;)です):
既に(で掲載が、単語を抽出するためにstr_word_count
を使用して同様の
function reduce($v, $p) {
return strlen($v) > strlen($p) ? $v : $p;
}
echo array_reduce(str_word_count($string, 1), 'reduce'); // prints Elephant
スペースで区切るだけで句読点もカウントされます)。
$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は 'str_word_count()'を使っています。私は関数を 'usort()'の呼び出しの中に置いて、簡潔にしたいと思います。私はjQueryの慣習に従う! – Sampson
@ジョナサン・サンプソン:しかし、私は配列への参照がありません... –
私は関数を作成する必要がありません(とシンボルテーブルを汚染する)! 'create_function'はそれを修正しますが、その後は非常に冗長です。 –
これは非常に便利な機能ですション、その目的のためにPHPの関数を作成するのは良い考えかもしれませんので、テキストを扱う:
function 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
テストここでは、この機能:http://ideone.com/FsnkVW
あなたがこれまでに試してみましたか?誰かがあなたに答えを与えるかもしれないが、あなたが最初に何かを試してみるともっと多くを学ぶだろう。 (そして、あなたがそれに何らかの考えを入れたことを示すならば、より良い答えを得る可能性が高くなります。) – JasCav