PHP 获取第一个唯一的子字符串


php get first unique substring

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

例如,我想找到被问到的唯一字符串">tr6hrvjh">

$string = "htr6hrvjhtr6hrvjhtr6hrvjhtr6hrvjh";

我尝试了substr_count并使用for((,也尝试了嵌套循环。 仍然无法让它工作您有什么方法可以检索唯一字符串吗?或者可以使用正则表达式吗?我目前正在使用PHP。如果你可以用其他编程语言做到这一点,请这样做。

--编辑--

好的。Niftydude所说的 IM所指的唯一字符串是重复的。 对此感到抱歉。 让我改写一下这个问题

$string (h( 中的第一个字符用作正在搜索的唯一字符串的"限制器"。 它指示正在搜索的唯一字符串的末尾。

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

我所做的是从第一个偏移量 [1] 开始循环$string中的每个字符,即 (t(。 循环仅在以下情况下结束

  • 您找到了"限制器"字符,即"h">
  • 例如,当您遍历已经有 'tr6hrvjh' 的$string时,字符串已经重复了自己。 又循环了几次后,您再次检测到"tr6hrvjhtr6"。 您的循环必须结束。

"唯一"字符串的条件是:

  • 必须仅为字母数字
  • 必须为>= 5
  • $string中的所有字符都必须位于该"唯一"字符串中。 例如,如果$string是 HTR6ahrvjhtr6ahrvjhtr6ahrvjh,则唯一字符串必须是 tr6ahrvjh 而不是 tr6ah,这会将 rvjh 留在$string

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

另一个问题是被搜索的字符串中有两个 H。 好吧,我希望你能理解它。 随时发表评论:D

--编辑--

到目前为止,我遇到的测试字符串就像我给你的一样

htr6hrvjhtr6hrvjhÔi§ ̄ŸÍ©¥g§¬Ð™×ªhÖØ ̃¦ÓkÕšÕª—©«

htr6hrvjhtr6Ôi§ ̄ŸÍ©¥g§¬ÐתhÖØ ̃¦ÓkÕ¬™ šõª—©«

512354651235465Ôi§ ̄ŸÍ©¥g§¬Ð×™ ªhÖØ ̃¦ÓkÓkÕšÕª—©«

5123546512354651235Ôi§ ̄ŸÍ©¥g§¬Ð™×ªhÖØ ̃¦ÓkÓkŴšÕª—©«

可能是我仍然没有正确理解您的问题,但请尝试以下操作:

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

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

使用strpos() .给你的字符串和"针",它将返回索引你的针在字符串中的第一个实例。如果未找到,它将返回FALSE

大海捞针的例子:

 $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