用php找到重复的单词列表

时间:2012-08-13 14:32:56

标签: php text

这是一个简单的问题,但我不知道如何解决这个问题。

我有一个单词列表,如:

word
word
    one
    two
    three
    four
    five
    .
    ....X100
word
word

单词(一,二,三,四,五)完全重复,并以相同的顺序,让我们说100次。单词(单词)不重复,应该被忽略。

我希望得到完全相同顺序的(一,二,三,四,五)列表。怎么能在PHP中完成。 到目前为止我所尝试的只能计算单词的出现次数,并且不尊重单词顺序。

更新

谢谢你的答案!

这是我的代码,仍有很多错误

<?php
$str = 'word
word
word2
word3
one
two
three
four
one
two
three
four
one
two
three
four
one
two
three
four
one
two
three
four
one
two
three
four
yes
no 
do';
function repeated($str)
{
    $str=trim($str);  
    $str=ereg_replace('[[:space:]]+', ' ',$str);  
    $words=explode(' ',$str);  
    $lastWord = '';
    foreach($words as $w)  
    {  
        $wordstats[($w)]++;  

        if($lastWord!=''){
            $wordstats[$lastWord.' '.$w]++;
        }
        $lastWord = $w;
    }  
    foreach($wordstats as $k=>$v)  
    {  
        if($v>=2)  
        {  
            print "$k"." , ";  
        }  
    }  
}

print repeated($str);

?>

基本上我想要的是给php那个$ str文本,它会在其中重复多次(一,二,三,四),并确定模式(一,二,三,四)这都是

2 个答案:

答案 0 :(得分:0)

现在,请将此视为提示:

您可以使用计数变量和数组。 创建所需单词的数组:

$SearchMe = array("One", "Two", "Three", "Four");
$Index = 0;

接下来,遍历您想要的列表。 但是不要检查'One','Two','Three',而是检查:

$SearchMe[$Index];

每次,你找到$ SearchMe [$ Index],迭代它,直到你在数组的末尾。一旦你在那里,你增加另一个计数器,因为你找到了你的序列。 在序列结束时,或者如果发现不匹配,请记住将$ Index重置为0.

这应该有效。

答案 1 :(得分:0)

<强>更新 我认为这不是你要找的答案。在再次阅读你的问题之后,我不太确定你的实际问题是什么。所以请向我们提供更多信息,以便我们更准确。

-

我认为你正在寻找这样的东西。你的清单是一个数组吗?如果是这样的话:

    <?php      
    foreach ($list as $key => $value ){
      if (isarray($value)){
        $ListINeed[] = $value;
      }
    }
    ?>

如果您在开场白内发布了阵列,则会返回:

    $ListINeed[1] = array(
      [0] => one
      [1] => two
      [2] => three
      [3] => four
      [4] => five
      [x] => .
      [100] => ....X100
    )

如果您确定ListINeed只存在一次,请删除if语句中第一段代码中$ ListINeed后面的两个括号([])。然后你会得到

    $ListINeed = array(
      [0] => one
      [1] => two
      [2] => three
      [3] => four
      [4] => five
      [x] => .
      [100] => ....X100
    )