Autor | Zpráva | ||
---|---|---|---|
regvac Profil * |
#1 · Zasláno: 4. 5. 2009, 15:46:44
Ahoj,
potřeboval bych poradit, jak proložit výraz v nějaké proměnné náhodnými znaky a pak funkci vracející vše zpět. Chtěl bych mezi každý znak v textu vložit jeden další. V podstatě jde o princip zašifrovat a dešifrovat s tím, že kdo zná šifru ji sám dešifruje bez nutnosti použít nějaký dešifrovací klíč. V mém případě já budu vědět, že původní text byl tvořen každým lichým znakem. Např. mám v proměnné $text = "ahoj" a chtěl bych z něj udělat třeba $text = "a1h2o3j4". A pak podobně udělat opak, tedy z "a1h2o3j4" udělat "ahoj". Postačí mi klidně jen tento případ (1 znak vložit za každý stávající znak). Nepotřebuji nějaké univerzální udělátko. Děkuji. |
||
pmasarik Profil |
#2 · Zasláno: 4. 5. 2009, 16:24:09 · Upravil/a: pmasarik
$t = str_split('ahoj'); $x = ''; foreach ($t as $key=>$value) { $x .= $key.$value; } echo $x; $y = str_split($x); $z = ''; foreach ($y as $key=>$value) { if ($key%2) { $z .= $value; } } echo $z; |
||
regvac Profil * |
#3 · Zasláno: 4. 5. 2009, 18:07:52
Dík, asi to funguje v jiné verzi PHP než co mám, PHP4. Jde to pro PHP4. Zkoušel jsem explode, ale nejde u něj nastavit "" pro rozdělení.
|
||
pmasarik Profil |
#4 · Zasláno: 4. 5. 2009, 18:11:39 · Upravil/a: pmasarik
„Dík, asi to funguje v jiné verzi PHP než co mám, PHP4. Jde to pro PHP4. Zkoušel jsem explode, ale nejde u něj nastavit "" pro rozdělení.“
Kde vidíš funkciu explode??? Tá je nepoužiteľná v tvojom prípade, preto existuje funkcia str_split ktorá robí to čo chceš. EDIT: Nepochopil som na prvý krát tvoju vetu a je to pre PHP5 |
||
pmasarik Profil |
#5 · Zasláno: 4. 5. 2009, 18:13:06
Sorry, nepochopil som tvoju vetu, str_split funguje až od PHP5
|
||
Str4wberry Profil |
#6 · Zasláno: 4. 5. 2009, 18:21:17
Kdyby se ten znak, kterým prokládáš, nemusel měnit, vystačil by sis s funkcí wordwrap.
|
||
regvac Profil * |
Už jsem si našel řešení:
$t = preg_split("//", 'ahoj', -1, PREG_SPLIT_NO_EMPTY); |
||
AM_ Profil |
#8 · Zasláno: 4. 5. 2009, 19:03:44
tohle mi přijde dost těžkopádné, navíc to neproloží náhodnými znaky, ale posloupností čísel 1-n
$str = 'ahoj'; $result = ''; for ($i = 0; $i < strlen($str); $i++){ $result .= $str[$i] . chr(65+rand(0, 25)); //vlozi jedno pismenk z $str a jedno nahodne pismenk } echo $result // "a?h?o?j?"; - otazniky sou nahodna pismena $zpatky = ''; for ($i = 0; $i < strlen($result); $i+=2){ $zpatky = $result[$i]; } echo $zpatky; //$zpatky je 'ahoj'; |
||
Časová prodleva: 15 let
|
0