0

这是一个简单的问题,但我仍然不知道如何弄清楚。

我有一个单词列表,例如:

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

单词(一、二、三、四、五)以相同的顺序准确重复,比如说 100 次。单词(word)不重复,应忽略。

我想以完全相同的顺序获得(一、二、三、四、五)的列表。这如何在 php.ini 中完成。到目前为止,我所尝试的只是计算单词的出现次数,并且不尊重单词顺序。

更新

谢谢大家的解答!

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

<?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 文本,其中将包含多次重复的单词(一、二、三、四),并确定模式(一、二、三、四)就是这样

4

2 回答 2

0

现在,请将此视为提示:

您可以使用计数变量和数组。创建一个你想要的单词数组:

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

接下来,遍历您想要的列表。但不要检查“一”、“二”、“三”,而是检查:

$SearchMe[$Index];

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

那应该行得通。

于 2012-08-13T14:37:01.683 回答
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
    )
于 2012-08-13T14:39:19.553 回答