查找每个单词出现在php中的字符串中的次数

I have an HTML form with a comment box textarea. I want to be able to count how many words were input (which I have done with str_word_count then I want to be able to tell the user how many times each word appeared in the string. I can print the values like this Array ( [I] => 1 [like] => 1 [comments] => 1 ) but how would I output into a 2 column table where it shows the word and the count?

Thanks for any help!

Form Code:

<html>
<head>
  <title>PHP Form</title>
</head>

<body>
  <form name="newForm" method="post" action="formProcess.php">UserName:
    <input type="text" name="userName" size="15" maxlength="15">
    <br>Password:
    <input type="password" name="pass1" size="15">
    <br>Confirm Password:
    <input type="password" name="pass2" size="15">
    <br>
    <p>I agree to the terms and conditions.
      <br>
      <input type="radio" name="terms" value="yes">Yes
      <input type="radio" name="terms" value="no">No
      <p>Enter comments here:
        <br>
        <textarea name="comments" rows="6" cols="50" wrap="physical"></textarea>
        <p>
          <input type="submit" name="submitForm">
          <input type="reset" name="resetForm">
        </p>
  </form>
</body>

</html>

PHP:

<?php

$userName = $_POST[userName];
$pass1 = $_POST[pass1];
$pass2 = $_POST[pass2];
$terms = $_POST[terms];
$comments = $_POST[comments];

echo "Username: $userName<br />";
echo "Terms Agreed to? $terms<br />";
echo "Your comments: $comments<br />";

$count = str_word_count($_POST['comments']);

print_r( array_count_values(str_word_count($comments, 1)) );

echo "Total words in comment box: $count<br />";

function validatePassword($pass1,$pass2) { 
    if($pass1 === $pass2) 
        {         
          $msg = "Password confirmed!"; 
        } 
        else 
        {
          $msg = "Passwords do not match!"; 
        } 
        return $msg;
}
echo validatePassword($pass1, $pass2);
?>

The code you posted in the comments is ok, but it considers words written with different casing as different words (like "Comments" and "comments"). So don't forget to use strtolower:

<?php  
$comments = "Comments? I like comments.";

$commentsArray = array_count_values(str_word_count(strtolower($comments), 1));

echo "<p>How many words were input: " . count($commentsArray) . "</p>";
?>
<table>
    <tr>
        <th>Word</th>
        <th>Count</th>
    </tr>
    <?php foreach($commentsArray as $word=>$count): ?>
    <tr>
        <td><?php echo $word; ?></td>
        <td><?php echo $count; ?></td>
    </tr>
    <?php endforeach; ?>
</table>

This script echoes:

How many words were input: 3

Word     Count
comments     2
i            1
like         1

to show in two column, just loop through the array. and you'll get your result

<?php

$string = "Hello, still2blue. This is your string. This string is repeated";

$words_list = str_word_count($string, 1); // this returns the array of words 

$results = array_count_values($words_list);
foreach($results as $word => $count){
    echo sprintf("%-10s %2d", $word, $count) . PHP_EOL;
}

Example code on Ideone