1

私は PHP でパスワード強度チェッカーを作成しており、正規表現を使用して強度計算用のさまざまなパラメーターを計算しています。文字列内の連続する文字の繰り返し数を確認できる必要があります。例えば:

baaabaaablacksheep戻るだろう5

sillystring戻るだろう1

and so on...
4

2 に答える 2

4

正規表現を使用し\1+て繰り返し文字を見つけ、 を使用strlen()してそれらを数えることができます。次のようなものを試してください:

$str = 'baaabaaablacksheep';    
$repeating = array();
preg_match_all('/(\w)(\1+)/', $str, $repeating);

if (count($repeating[0]) > 0) {
    // there are repeating characters
    foreach ($repeating[0] as $repeat) {
        echo $repeat . ' = ' . strlen($repeat) . "\n";
    }
}

出力:

aaa = 3
aaa = 3
ee = 2
于 2012-07-24T15:41:34.977 に答える
1

newfurnitureyによって投稿されたソリューションの別のバリアント:

$passarr = Array('baaabaaablacksheep', 'okstring', 'sillystring');

foreach($passarr as $p) {
   $repeats = 0;
   preg_match_all('/(.)(\1+)/', $p, $matches, PREG_SET_ORDER);
   foreach($matches as $m) $repeats += strlen($m[2]);
   printf("%s => %d repeats\n", $p, $repeats);
}

プリント:

baaabaaablacksheep => 5 repeats
okstring => 0 repeats
sillystring => 1 repeats
于 2012-07-24T16:34:13.170 に答える