php获取第一个唯一的子串

时间:2012-05-23 10:16:12

标签: php string substring unique

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

例如我想在

中找到被询问为“ tr6hrvjh ”的唯一字符串
  

$ string =“htr6hrvjhtr6hrvjhtr6hrvjhtr6hrvjh”;

我尝试 substr_count 并使用 for(),也尝试了嵌套循环。仍然无法使其发挥作用 你有任何方法来检索唯一的字符串吗?还是可以使用正则表达式? 我目前正在使用php。如果你能用其他编程语言来做,请这样做。

- 编辑 -

确定。正是 niftydude 表示重复引用的唯一字符串。对于那个很抱歉。让我重新解释一下这个问题

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

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

我所做的是从第一个偏移[1]开始,每个字符在$ string中循环,即(t)。循环只会在

时结束
  • 您找到了'限制者'字符'h'
  • 当您遍历已经拥有'$ 6hrvjh'的$ string时,字符串已经重复了。经过几次循环后,你再次检测到'tr6hrvjhtr6'。你的循环必须结束。

'unique'字符串的条件是:

  • 必须仅限字母数字
  • 必须为> = 5
  • $ string中的所有字符必须位于该“唯一”字符串中。例如,如果$ string是 htr6ahrvjhtr6ahrvjhtr6ahrvjh ,唯一字符串必须是 tr6ahrvjh 而不是 tr6ah ,这会在$中留下 rvjh

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

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

- 编辑 -

到目前为止我遇到的测试字符串就像我给你的那些

  

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

     

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

     

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

     

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

3 个答案:

答案 0 :(得分: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;
}

演示:http://codepad.viper-7.com/oYoD40

答案 1 :(得分:0)

http://php.net/manual/en/function.strpos.php

使用strpos()。给你的字符串和'针',它将返回索引作为字符串中第一个针的实例。如果找不到,则返回FALSE

答案 2 :(得分:0)

大海捞针示例中的针:

 $pos = strpos($haystack,$needle);

    if($pos === false) {
     // string needle NOT found in haystack
    }
    else {
     // string needle found in haystack
    }

http://www.maxi-pedia.com/string+contains+substring+PHP

另外,关于它的php.net手册: http://php.net/manual/en/function.strpos.php