Autor Zpráva
handuk
Profil
Zdravím, upravuji jednu fotogalerii, tak aby fungovala i s českými znaky. Snažím se napsat funkci která:

1) přejmenuje uživatelem nahranou složku (z názvu se odstraní diakritika)
2) vytvoří soubor "caption.txt"a zapíše do něj název s diakritikou
3) soubor přejmenuje na ".caption"

Tady je můj kód:

function createCaption($album)
{
    //$album posílám do funkce jako parametr pomocí $_GET['album']
    $album = iconv('windows-1250','utf-8',$album);
    rename('$mainFolder.'/'.$album' , '$mainFolder.'/'. StrTr($album, "ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýž", "AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz"))' );

    $filename = '$mainFolder.'/'.$album.'/caption.txt';
    $handle = fopen($filename, 'x+');
    fwrite($handle, $album);
    fclose($handle);

    rename($filename, '$mainFolder.'/'.$album.'/'.caption');
}

Kód bohužel nefunguje, nevypadá to, že by prováděl nějaké změny. Pokud ale změní $filename jen na "'/caption.txt" tak se vytvoří prázdný soubor (samozřejmě v jiném adresáři"). V čem je ted problém? Děkuji za reakce!
Chro
Profil
1. Všude si oprav chybu, kdy ve funkcích i jinde před $ vkládáš apostrof. Správný syntax je např.
rename('blabla', $promenna.'/'.$promenna.'/'.$promenna);
2. Funkce strtr se třemi parametry nikdy pro UTF-8 nebude korektně fungovat, protože kupř. znak A je velký jeden bajt a znak Á už má bajty dva. Funkce se třemi parametry totiž postupuje podle bajtu, nebere znak a znak. Zkus převodní pole:
$text = 'čágo';
$pole = array(
'á' => 'a',
'č' => 'c'
//atd.
);
$bez_diakritiky = strtr($text, $pole);
peta
Profil
Zkus pouzit pspad nebo nejaky program, co obarvuje php kod. Uz tady na foru je krasne videt, ze to nemas spravne zapsane.
'$mainFolder.'/'.$album'
co to je?
$a.$b je scitani promennych.
'aaa'.'bbb' je scitani retezcu (string).
'$a.'/'.$b' = '$a.'a dal nasleduje nesmysl, syntax error, ocekava se zde strednik nebo tecka .

Moderátor Davex: Odtud byly vytrženy příspěvky do nového tématu Nedaří se přejmenovat soubory načítané přes readdir.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0