搜索单词中的字母是否在另一个单词PHP Strings中找到

时间:2012-08-21 02:17:27

标签: php

就像这篇文章的标题所说的那样,我能够检查一个单词的每个字母是否都出现在另一个单词中。到目前为止,这些是我能够提出的代码行:

<?php   
        $DBword = $_POST['DBword'];
        $inputWords = $_POST['inputWords'];

        $inputCount = str_word_count($inputWords,1);



        echo "<b>THE WORD:</b>"."<br/>".$DBword."<br/><br/>";
        echo "<b>WORDS ENTERED:</b><br/>";

            foreach($inputCount as $outputWords)
            {
                echo $outputWords."<br/>";
            }

            foreach($inputCount as $countWords)
            {
                for($i=0; $i<strlen($countWords); $i++)
                {$count = strpos( "$DBword", $countWords[$i]);}

                if($count === false)
                {
                    $score++;
                }


            }

            echo "<b><br/>TOTAL SCORE: </b>";
            echo $score;


        ?>

foreach$outputWords放在一起的意思是输出输入的字母。 对于foreach的其他$countWords,我正在使用它来检查输入的单词中的所有字母是否都在$DBword中找到。我使用for循环检查每个字母。

到目前为止,我没有得到我想要的输出,我只是用尽了想法。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

function contains_letters($word1, $word2) {
  for ($i = 0; $i < strlen($word1); $i++)
    if (strpos($word2, $word1{$i}) === false)
      return false;
  return true;
}

//example usage
if (contains_letters($_POST['inputWords'], $_POST['DBword']))
  echo "All the letters were found.";

如果此检查不区分大小写(即'A'计为'a'的用法),请将strpos更改为stripos

答案 1 :(得分:0)

由于您在$count中的每个字母的for循环中覆盖$countWords$count将仅包含$countWord的最后一个字母的位置。另外,我不确定为什么你在找不到的时候增加分数。

无论如何,你的生活比必要的更困难 PHP有一个function for counting chars in a string

return count_chars($dbWord, 3) === count_chars($inputWord, 3);
如果在两个字符串中找到相同的字母,

将返回true。

查找具有完全相同字母的所有单词的示例:

$dbWord = count_chars('foobar', 3);
$inputWords = 'barf boo oof raboof boarfo xyz';
print_r(
    array_filter(
        str_word_count($inputWords, 1),
        function($inputWord) use ($dbWord) {
            return count_chars($inputWord, 3) === $dbWord;
        }
    )
);

仅输出“raboof”和“boarfo”。