Autor Zpráva
tomas3333
Profil
zdravim, potrebujem prevadzat javascriptom diakritiku v texte, tak som si zobral php funkciu na prevod a skusil ju upravit

<script type='text/javascript'>

function prevod_diakritiky(text)
{
var pis = new Array();
var nah = new Array();
  pis[1]="ě";
  nah[1]="283";
  pis[2]="Ě";
  nah[2]="282";
  pis[3]="š";
  nah[3]="353";
  pis[4]="Š";
  nah[4]="352";
  pis[5]="č";
  nah[5]="269";
  pis[6]="Č";
  nah[6]="268";
  pis[7]="ů";
  nah[7]="367";
  pis[8]="Ů";
  nah[8]="366";
  pis[9]="ň";
  nah[9]="328";
  pis[10]="Ň";
  nah[10]="327";
  pis[11]="ď";
  nah[11]="271";
  pis[12]="Ď";
  nah[12]="270";
  pis[13]="ť";
  nah[13]="357";
  pis[14]="Ť";
  nah[14]="356";
  pis[15]="ř";
  nah[15]="345";
  pis[16]="Ř";
  nah[16]="344";
  pis[17]="ž";
  nah[17]="382";
  pis[18]="Ž";
  nah[18]="381";
  pis[19]="ó";
  nah[19]="243";
  pis[20]="Ó";
  nah[20]="211";
  pis[21]="í";
  nah[21]="237";
  pis[22]="Í";
  nah[22]="205";
  pis[23]="á";
  nah[23]="225";
  pis[24]="Á";
  nah[24]="193";
  pis[25]="é";
  nah[25]="233";
  pis[26]="É";
  nah[26]="201";
  pis[27]="ý";
  nah[27]="253";
  pis[28]="Ý";
  nah[28]="221";
  pis[29]="ľ";
  nah[29]="318";
  pis[30]="Ľ";
  nah[30]="317";
  
  var i;
 var text_new;  
for(i=1; i<=30; i++){
    nah[i]="&#"+nah[i]+";";
 text_new=text.replace(pis[i], nah[i]);
  }
document.write(text_new);
}

prevod_diakritiky("asfš as");

</script>


a replace ked tam volam pis[i] nefunguje... skusal som uz vsetko, co ma napadlo, ale premennu mi to nie a nie zobrat. je nejaky sposob? dakujem
peta
Profil
Replace samozrejme funguje. Jenze php str_replace neni totozne s js replace. js replace je php ereg.
http://www.volny.cz/peter.mlich/www.htm#mssub19
Takze je treba pridat prislusna lomitka a neco typu global /.../g nebo new RegExp(str,param).

Takovehle nahracovani je lepsi resit tim, ze prochazis str od 0 po jeho delku a pak prochazis pole znaku a nahrazujes
for(0 az str.len)
{b=false; for(0 az pole.len) {if (x==y) {b=true; break;}}
out += (b) ? z : str[i]}
plus minus uprava
Chamurappi
Profil
Reaguji na tomase3333:
Zkusil jsem to stručněji:
<script>
function prevod_diakritiky(text)
{
  return text.replace(/[\u00FF-\uFFFF]/g, function(p){ return "&#" + p.charCodeAt(0) });
}
</script>
tomas3333
Profil
dakujem, skusim
tomas3333
Profil
Chamurappi: dik, skusil som to a funguje... a je to lahsie jak som cakal :)

edit: zistil som, ze to funguje spravne pre pismena s makcenom, ale pre tie s dlznom uz nie, napriklad áý... nejaky napad?
los
Profil *
Použi regulárny výraz: /[\u0080-\uFFFF]/g
peta
Profil
Chamurappi
To je dobra funkce. Ja bych to teda resil temi cykly, ale tohle se mi libi vic. Pouzitelne i pro URL encode.
tomas3333
Profil
los: dakujem
tomas3333
Profil
inak, skusal som si nieco o regulernych vyrazoch najst, aj som nasiel, ale velmi som nepochopil... teda... hlavne to \u0080-\uFFFF, to je... su znaky od "a..z", ktore to vsetky nahradi? kde su tie hodnoty napisane, cisla?(0080 napr.)
nerad by som len tupo kopiroval kody, dakujem
peta
Profil
http://www.volny.cz/peter.mlich/www.htm#mssub19
\u0080 jsou znaky od dekadickeho 128 po 65535, kde muze byt diakritika a nejake jine rozdily. Najdi si acti tabulku
u = unicode

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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