Autor Zpráva
tttvitek
Profil *
Zdravím, potřebuji změnit znakovou sadu array pomocí fce iconv, ale dostávám akorát tuto hlášku Warning: iconv() expects parameter 3 to be string, array given in /data/web/virtuals/46112/virtual/www/pes76.php on line 6

$data=iconv("CP1250","UTF8//TRANSLIT",$data); 
Vstupní kódování je CP1250, výstup potřebuji do javascriptu v UTF-8 Díky za radu
juriad
Profil
Nemůžeš změnit kódování pole, jen řetězců; chceš asi něco takového:

<?php
$data2 = array();
foreach ($data as $klic => $hodnota) {
  $data2[$klic] = iconv("CP1250","UTF8//TRANSLIT", $hodnota); 
}
?>
tttvitek
Profil *
Díky, ale pořád stejný problém. TeĎ mi to navíc tuto hlášku vypisuje vícekrát. Warning: iconv() expects parameter 3 to be string, array given in .........


Díky za radu, ale nějak mi to stále nefunguje. Pořád to vypisuje tuto hlášku, akorát teĎ vícekrát.
Alphard
Profil
Tak možná máte vícerozměrné pole. Princip je snad zřejmý, ne? Projít pole po složkách a překódovat vždy jednotlivé řetězce. Lze použít i array_map(), ale cyklus je asi názornější.
juriad
Profil
# poznamka: ty znaky & u promennych zajisti, ze zmena muze probehnout namiste
function iconv_all($z, $do, &$data) {
  if(is_array($data)) { # pokud je to pole
    foreach($data as $klic => &$hodnota) { # tak ho projdi po prvcich
      iconv_all($z, $do, $hodnota); # pro kazdy se zavolej rekurzivne
    }
  } else if(is_string($data)) { # pokud je to retezec
    $data = iconv($z, $do, $data); # tak ho roznou prekonvertuj
  }
}

$data = array(array('ášďëŕúüô', 'äěéřťýůíó', 'žßčçñňĺ'), 'ÄĚÉŘŤÝŮÍÓ');
iconv_all('CP1250', 'UTF8//TRANSLIT', $data);
print_r($data);

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: