Portál AbcLinuxu, 9. května 2025 20:50
<?
$x = "abc";
$l = strlen($x);
for($i = 0; $i < $l; $i++) {
for($j = 0; $j < $l; $j++) {
for($k = 0; $k < $l; $k++) {
$kombinace = $x[$i] . $x[$j] . $x[$k];
print "$kombinace<br>\n";
}
}
}
?>
PS: pokud to chces na nejaky prolamovani hesel, tak PHP neni nejvhodnejsi jazyk a zkouset vsechny kombinace timhle zpusobem neni nejvhodnejsi zpusob #!/usr/bin/perl @pole = ('a', 'b', 'c'); while ($y++ < @pole) { undef @indexy; while ($x < $y) { $x = 0; for ($i=0; $i < $y; $i++) { print $pole[$indexy[$i]] }; while (++$indexy[$x] >= @pole) { $indexy[$x++] = 0 }; print "\n"; } }
<? $x = "abcd"; $l = strlen($x); $max = $l; for($n = 1; $n <= $l; $n++, $max *= $l) { # 1 - n-clenne kombinace for($c = 0; $c < $max; $c++) { # $max je pocet kombinaci dany delky $kombinace = ""; # postupuju jako bych prevadel cislo $max no jiny ciselny soustavy $d = $c; # s ciframa $x for($i = 0; $i < $n; $i++) { $kombinace = $kombinace . $x[$d % $l]; $d /= $l; } print "$kombinace<br>"; } } ?>
Např. Nemůže být CCCC5D44D25085BD (obsahuje 4 x C), ale ani CCCC5D44D2508888 (obsahuje 4 x C a ještě k tomu 4 x 8)
/(.)\1{3}/
Děkuji za odpověd.Myslím si ale,že by to spíš mohla být funkce preg_replace($re,$replacement,$str),podle http://interval.cz/clanky/perl-compatible-regularni-vyrazy-v-php-subvyrazy-a-zpetna-reference/ ,kde pro $replacement bych použil prázdný řetězec,popř. bych jej odstranil úplně.
P.S.Mohl by jste mi prosím napsat jak tu funkci vložím do tohoto scriptu? Nemůžu na to přijít.
$x = "012345"; $l = strlen($x); for($a = 0; $a < $l; $a++) { for($b = 0; $b < $l; $b++) { for($c = 0; $c < $l; $c++) { for($d = 0; $d < $l; $d++) { for($e = 0; $e < $l; $e++) { $kombinace = $x[$a] . $x[$b] . $x[$c] . $x[$d] . $x[$e]; $re="/(.)\1{3,}/"; $replacement=" "; $vysledek=preg_replace($re, $replacment, $kombinace); $soubor = fopen('soubor.txt', 'a'); fwrite($soubor, "$vysledek\n"); fclose($soubor); } } } } } ?>
if (preg_match ('/(.)\1{3}/', $kombinace)) { print "$kombinace\n"; }
if (! preg...
#!/usr/bin/perl @pole = ('a', 'b', 'c'); while ($x < @pole) { $x = 0; for ($i=0; $i < @pole; $i++) { print $pole[$indexy[$i]]}; while (++$indexy[$x] >= @pole) {$indexy[$x++] = 0}; print "\n"; };
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.