PHP:从字符串中提取单词并获取字数

时间:2015-04-08 18:08:05

标签: php string

我已经尝试了几个小时来解决这个问题,但无济于事。我搜索和搜索了很多结果,说使用数组。我不能使用数组,因为我的课程尚未涉及。这就是我要做的事情: 我将使用for循环来检查使用索引变量的字符。 找到空白字符时,表示单词的结尾。 然后,我需要从字符串中提取单词并增加单词计数,从而打印单词计数和提取的单词,继续直到句子的结尾。 然后打印总字数。 我坚持的是提取这个词。这是我到目前为止所做的,这很可能是错的,但我在这里结束了我的智慧,所以任何一点点推动正确的方向都会很棒。 (记住,我不能使用数组。)

$stringSentence = "The quick brown fox jumps over the lazy dog";
$wordcount = 1;
$blankCharacter = stripos($stringSentence, " ");

for ($i =0; $i<strlen($stringSentence);$i++)
{
     $i. " ". $stringSentence{$i}."<br>";

}
if ($blankCharacter)
{
    echo $wordcount++, " ";
    echo substr($stringSentence,0,$blankCharacter);
}

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

阵列并不复杂!并且解决方案非常简单:

(这里我只是explode()你的字符串变成一个数组。然后我只是遍历数组并打印输出)

<?php

    $stringSentence = "The quick brown fox jumps over the lazy dog";
    $words = explode(" ", $stringSentence);

    foreach($words as $k => $v)
        echo "WordCount: " . ($k+1) . "| Word: $v<br>";

    echo "Total WordCount: " . count($words);

?>

输出:

WordCount: 1| Word: The
//...
WordCount: 9| Word: dog
Total WordCount: 9

如果您想了解有关数组的更多信息,请参阅手册:http://php.net/manual/en/language.types.array.php

修改

如果您不能使用数组,请使用:

这里我只是循环遍历句子的所有字符,以检查它是空格还是字符串的结尾。如果条件为真,我打印单词count +来自最后一个空格的substr,直到当前空格。然后我也用1增加字数。最后我简单地打印总字数(注意我减去1,因为最后一个字也会加1到计数太多)。

<?php

    $stringSentence = "The quick brown fox jumps over the lazy dog";
    $wordcount = 1;
    $blankCharacter = 0;

    for ($i = 0; $i < strlen($stringSentence); $i++) {
        if($stringSentence[$i] == " " || $i+1 == strlen($stringSentence)) {
            echo "WordCount: $wordcount | Word: " . substr($stringSentence, $blankCharacter, $i-$blankCharacter+1) . "<br>";
            $blankCharacter = $i;
            $wordcount++;
        }

    }
    echo "Total WordCount: " . ($wordcount-1);

?>

答案 1 :(得分:0)

由于这是家庭作业,我不能为你做,但你有一个在错误的地方的一个结束

看看这个sudo代码,你应该朝着正确的方向前进。

$blankCharacter = ' ';
for ($i =0; $i<strlen($stringSentence);$i++)
{         
    if (thisCharacter == $blankCharacter)
    {
        $wordcount++;
    }
}

答案 2 :(得分:0)

您是否考虑过查看每个字母以检查空格并存储在临时缓冲区中?一个例子:

$stringSentence = "The quick brown fox jumps over the lazy dog";

$buffer = '';
$count = 1;
$length = strlen($stringSentence);
for ($i = 0; $i < $length; $i++) {
    if ($stringSentence{$i} !== ' ') {
        $buffer .= $stringSentence{$i};
    } else {
        echo $count++ . ' ' . $buffer . ' ';
        $buffer = '';
    }
}
echo $count . ' ' . $buffer;

我没有对我的答案做出太多解释..这是向你提供答案的倒退方法,但是由你来理解上述方法的工作方式和原因。