| 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: 16 let
|
|||
0