如何从文本文件story.txt中打印最长和最短的单词,并在php中查找每个单词的频率?

如何从文本文件story.txt中打印最长和最短的单词,并在php中查找每个单词的频率?,php,regex,string,parsing,text,Php,Regex,String,Parsing,Text,我已经写了这段代码,但它扫描了一段中的结束词和下一段中的第一个词。在以下段落中: 小溪边的艺术看起来就像一道阳光 沙漠动物通常是沙漠的颜色 在这方面, 阳光。沙漠 因此,我想这个帅哥的问题的答案是,除了单个空格外,这些单词之间没有任何分隔。在这种情况下,解决方案是使用 $string = file_get_contents('./story.txt', true); $words = explode('\n', $string); $w = array(); foreach ($word

我已经写了这段代码,但它扫描了一段中的结束词和下一段中的第一个词。在以下段落中:

小溪边的艺术看起来就像一道阳光

沙漠动物通常是沙漠的颜色

在这方面,

阳光。沙漠


因此,我想这个帅哥的问题的答案是,除了单个空格外,这些单词之间没有任何分隔。在这种情况下,解决方案是使用

$string = file_get_contents('./story.txt', true); 

$words  = explode('\n', $string);
$w = array();

foreach ($words as $word) {
$temp = explode(' ', $word);
$w = array_merge($w, $temp);

}

$longestWordLength = 0;
$longestWord = '';

foreach ($w as $word) {
   if (strlen($word) > $longestWordLength) {
      $longestWordLength = strlen($word);
      $longestWord = $word;
   }
}

echo $longestWord;
echo strlen($longestWord);

您现在可以开始了。

您可以尝试这种方法从文件文本中获取最长的字符串,我使用
array\u map()从数组中删除了额外的空格和点字符。


我想先按行分解,然后按单词分解每个分解的字符串,这会给我一个解决方案。但是什么也没有发生:(但是为什么你需要按行分解呢?如果需要,你可以很容易地按单词分解并修剪数组使用
preg\u spilt()
你可以使用
str\u word\u count()
来获得一个单词数组(没有标点符号和换行符)@AdityaShrivastava检查下面我的完整答案:)希望它能帮到你,非常感谢。但我给自己的帖子写了答案;)厕所。没问题,很高兴它对你有所帮助。你还可以告诉我如何从字符串中得到最小的单词。我不明白。你有没有尝试
返回数组_键($mapping,min($mapping))
?如果使用
return$mapping,我想您很容易就能找到最长和最短的
在该函数上,因为它的单词具有长度计数,因此很容易确定最短和最长:)
$string = file_get_contents('./story.txt', true); 

$words   = preg_split('/\s+/', $string);
function longest_string_in_array($array) {
    $array = array_map(function($item) { return trim($item, '. ');},$array);
    $mapping = array_combine($array, array_map('strlen', $array));
    return $mapping;
}

$string = file_get_contents('./story.txt', true);
$array = preg_split('/[\s]+/', $string );
print_r(longest_string_in_array($array));