0

特定の文字列の最初の一意の部分文字列を取得するにはどうすればよいですか。

たとえば、「tr6hrvjh」で尋ねられている一意の文字列を見つけたい

$string = "htr6hrvjhtr6hrvjhtr6hrvjhtr6hrvjh";

私はsubstr_countを試し、 for()を使用して、ネストされたループも試しました。まだ機能しません。一意の文字列を取得する方法はありますか? または正規表現を使用することは可能ですか? 私は現在phpを使用しています。他のプログラミング言語でできるなら、そうしてください。

- 編集 -

わかった。niftydude がが参照している一意の文字列が言ったことだけが繰り返されます。ごめんなさい。質問を言い換えさせてください

$string (h) の最初の文字は、検索される一意の文字列の「リミッター」として使用されます。検索されている一意の文字列の末尾を示します。

2 番目の文字 (t) は、一意の文字列の始まりです。だから私は「tr6hrvjh」と言ったのです

私がやったことは、(t) である最初のオフセット [1] から始まる $string の文字ごとにループすることです。ループは次の場合にのみ終了します

  • 「h」である「リミッター」文字が見つかりました
  • たとえば、すでに「tr6hrvjh」を持っている $string をトラバースしているときに、文字列はすでに繰り返されています。さらに数回ループした後、「tr6hrvjhtr6」をもう一度検出しました。ループを終了する必要があります。

「一意の」文字列の条件は次のとおりです。

  • 英数字のみである必要があります
  • >= 5 でなければなりません
  • $string のすべての文字は、その「一意の」文字列に含まれている必要があります。たとえば、$string がhtr6ahrvjhtr6ahrvjhtr6ahrvjhの場合、一意の文字列は tr6ah ではなく tr6ahrvjh である必要があり $ stringrvjhが残ります

$string は常にそのように見えることに注意してください。最初と 2 番目の文字は常に、それぞれ「一意の」文字列の最後と最初の文字として機能します。一意の文字列は常に $string で繰り返され、繰り返しの間に他の文字はありません。

もう 1 つの問題は、検索対象の文字列に 2 つの h があることです。あなたがそれを理解してくれることを願っています。お気軽にコメントしてください:D

- 編集 -

私がこれまでに遭遇したテスト文字列は、私があなたに与えたものと似ています

htr6hrvjhtr6hrvjhÔi§¯ŸÍ©¥g§¬Ð™×ªhÖØ¡˜¦ÓkÕ¬šÕª—©«</p>

htr6hrvjhtr6Ôi§¯ŸÍ©¥g§¬Ð™×ªhÖØ¡˜¦ÓkÕ¬šÕª—©«</p>

512354651235465Ôi§¯ŸÍ©¥g§¬Ð™×ªhÖØ¡˜¦ÓkÕ¬šÕª—©«</p>

5123546512354651235Ôi§¯ŸÍ©¥g§¬Ð™×ªhÖØ¡˜¦ÓkÕ¬šÕª—©«</p>

4

3 に答える 3

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

于 2012-05-23T11:55:11.220 に答える
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

于 2012-05-23T10:19:47.763 に答える
0

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

を使用しstrpos()ます。文字列と「針」を指定すると、文字列内の針の最初のインスタンスのインデックスが返されます。見つからない場合は、 を返しFALSEます。

于 2012-05-23T10:19:27.750 に答える