

PHP - zámena řetězců
Dobrý den, napsal jsem si skript v PHP ale nejede...
$zadani = $_GET['zadani'];
$pocet = strlen($zadani);
$pismena = "abcdefghijklm";
$dekod = array("a","b","c","d","e","f","g","h","i","j","k","l","m");
$enkod = array("n","o","p","q","r","s","t","u","v","w","x","y","z");
for ($i=0;$i<$pocet;$i++){
if(strpbrk($zadani[$i],$pismena)){
$zadani[$i] = str_replace($enkod,$dekod,$zadani[$i]);
echo $i;
}
else{
$zadani[$i] = str_replace($dekod,$enkod,$zadani[$i]);
}
echo $zadani;
Pak jsem si pracně! Napsal druhý mnohem kratší ale na hodně manuální práce který úž funguje, nešlo by to ale zapsat jinak jednodušeji nebo lépe? Mělo by to obracet písměna ve tvaru a>n nebo n>a atd... obyčejný str_replace udělal toto.. a>n>a což jsem vlastně tam kde jsem byl, Díky za rady.
Druhý:
<?
$zadani = $_GET['zadani'];
$pocet = strlen($zadani);
$dekoder = array("a" => "n", atd..... desítky obratů, "z" => "m");
$zadani = strtr($zadani,$dekoder);
echo "$zadani";
?>
Děláš Caesarovu šifru?
.
Jednoduché řešení:
To pole snad není problém nechat si ho vydegenerovat automaticky:
Výstup:
Bonus (ber to jako dárek k Velikonocím
). Funkce, která ti to udělá sama:
Je to napsaný trochu prasácky (PHPčka jsem se nedotknul pár měsíců), ale hlavně, že to funguje
.
TO pole je zbytečné generovat - pokud a->f pak stačí přičíst k ascii (a) hodnotu 5. a vsem kteri jsou vetsi nez 5predposledni pismenko pricist hodnotu ascii (z)-(a)+5
Pravdu díš, mrknul jsem se na funkci ord a ono to půjde i takto:
Určitě to půjde ještě zjednodušit
.
- ted uz konecne vim, kde sef prisel k nazoru, ze na produkcni databzi vypoustim prasacky kod
Díky hoši
Označil jsem tedy vyřešeno.