2012-05-23 32 views
0

如何获取给定字符串中的第一个唯一子字符串。php获取第一个唯一子字符串

例如我想找到的唯一的字符串被要求 “tr6hrvjh” 在

$字符串= “htr6hrvjhtr6hrvjhtr6hrvjhtr6hrvjh”;

我试图substr_count并使用为(),还试图嵌套循环。仍然无法得到它的工作 你有任何方法来检索唯一的字符串?或者有可能使用正则表达式? 我目前使用的是PHP。如果你可以用其他编程语言来做,请这样做。

- 编辑 -

好的。只是什么niftydude表示我重复提到的唯一字符串。对于那个很抱歉。让我重新修改这个问题

$ string(h)中的第一个字符被用作正在搜索的唯一字符串的“限制器”。它表示正在搜索的唯一字符串的结尾。

第二个字符(t)是唯一字符串的开始。这就是为什么我说“tr6hrvjh”

我所做的是我从第一个偏移量[1](t)开始每个字符在$字符串中循环。如果

  • 你找到了“限”字是“H”的循环,只会
  • 字符串已经重演例如,当您在$字符串你已经有了“tr6hrvjh”穿越。在又一次循环之后,您再次检测到“tr6hrvjhtr6”。你的循环必须结束。

为“独特的”串中的条件是:

  • 必须是字母数字仅
  • 必须> = 5
  • 在$字符串中的所有字符必须在“独特的”串。例如,如果$ string是htr6ahrvjhtr6ahrvjhtr6ahrvjh独特的字符串必须tr6ahrvjh没有tr6ah留下rvjh在$字符串

注意,$字符串总是看起来是这样。第一个和第二个字符总是分别作为“唯一”字符串的最后一个字符和第一个字符。并且唯一的字符串总是在$ string中重复,在重复之间没有其他字符。

另一个问题是在被搜索的字符串中有两个h。我希望你能理解它。随意评论:d

- 编辑 - 我曾经遇到过

测试串至今都像我有给你

htr6hrvjhtr6hrvjhÔi§¯ŸÍ©¥g§¬的那些d™×ªhÖØ¡~|ÓkÕ¬šÕª-©«

htr6hrvjhtr6Ôi§¯ŸÍ©¥g§¬Ð™×ªhÖØ¡~|ÓkÕ¬šÕª-©«

512354651235465Ôi§¯ŸÍ©¥克§¬Ð™×ªhÖØ¡~|ÓkÕ¬šÕª ©«

5123546512354651235Ôi§¯ŸÍ©¥g§¬Ð™×ªhÖØ¡~|ÓkÕ¬šÕª-©«

+2

'tr6hrvjh'是一个独特的子字符串?我看到他们重复:o –

回答

1

这可能是因为我仍然不明白你的问题正确,但试试这个:

function getUniqueString($string) { 
    $delimiter = $string[0]; 
    $chunks = array_filter(explode($delimiter, $string), function ($chunk) { 
    return preg_match('/^[0-9a-zA-Z]+$/', $chunk); 
    }); 

    return implode(array_unique($chunks)) . $delimiter; 
} 

demo:http://codepad.viper-7.com/oYoD40

+0

你是上帝。这可能会。虽然函数不能在我正在测试的当前字符串上工作 - http://codepad.viper-7.com/jOwfrR – kapitanluffy

+0

@kapitanluffy该新测试用例的预期结果是什么?到现在为止,我认为独特的字符串会形成一个重复的模式(这是找到它的原因)。 – Yoshi

+0

这个'tr6rvjh'.i遇到了一个新的字符串,它的重复模式比我上面提到的更短。虽然它仍然设法重复最后3个字符(tr6),然后我看到非alpha字符 – kapitanluffy

相关问题