Autor | Zpráva | ||
---|---|---|---|
tomas3333 Profil |
#1 · Zasláno: 31. 3. 2008, 16:07:24
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 |
#2 · Zasláno: 31. 3. 2008, 18:47:57
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 |
#3 · Zasláno: 31. 3. 2008, 18:59:42
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 |
#4 · Zasláno: 1. 4. 2008, 00:14:04
dakujem, skusim
|
||
tomas3333 Profil |
#5 · Zasláno: 1. 4. 2008, 00:25:43 · Upravil/a: tomas3333
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 * |
#6 · Zasláno: 1. 4. 2008, 09:10:19
Použi regulárny výraz: /[\u0080-\uFFFF]/g
|
||
peta Profil |
#7 · Zasláno: 1. 4. 2008, 09:24:09
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 |
#8 · Zasláno: 1. 4. 2008, 15:30:39
los: dakujem
|
||
tomas3333 Profil |
#9 · Zasláno: 1. 4. 2008, 19:19:29
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 |
#10 · Zasláno: 2. 4. 2008, 08:16:24
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 |
||
Časová prodleva: 16 let
|
0