Autor | Zpráva | ||
---|---|---|---|
jirka2 Profil |
#1 · Zasláno: 13. 4. 2016, 11:10:26
Ahoj,
v tagu ID není dovoleno kódování UTF8. Mám stránku generovanou PHP skriptem, který generuje i tagy ID z nějakého seznamu českých slov. Ze slova odstraním nabodeníčka a zobrazím tag ID. Ale jak mám ošetřit, aby ID nebyla duplicitní při použití českých slov plast a plášť. Pro obě tato slova vygeneruji stejné id="plast" . Napadá mě jen si držet seznam vygenerovaných ID a při hrozící duplicitě tam přidat třeba číslo. Ale možná Vás napadne něco elegantnějšího. Děkuji za pomoc či rady. |
||
Str4wberry Profil |
Ideální mi přijde ty identifikátory navrhovat ručně, takže si kolise člověk případně sám ošetří.
Pokud by to bylo moc pracné, je ukládání seznamu ID a přidávání číslovky asi nejlepší možnost. Mimochodem, ID je atribut a ne tag. |
||
jirka2 Profil |
#3 · Zasláno: 13. 4. 2016, 11:26:25
Str4wberry:
To jsem popletl, jasně ID je atribut. Ten seznam bude rozsáhlý a slova v něm libovolná, ruční práce nepřichází v úvahu. Řešit to seznamem se mi to zdálo komplikované. Napadlo mě ještě třeba konvertovat čárky na 1, háčky na 2. Výsledek pro slovo plášť by pak byl toto: id="pla1s2t2". |
||
Str4wberry Profil |
#4 · Zasláno: 13. 4. 2016, 11:52:25
Jinak si tak říkám, že by nemusel být problém v identifikátorech tu diakritiku mít. Pokud vím, tak to funguje a ani podle specifikace snad není nutné se diakritice bránit.
Identifikátor nadpisu s diakritikou Jen teoreticky může nastat problém při sdílení takového odkazu, protože ho některé systémy mohou špatně určit (znak s diakritikou mohou považovat za konec odkazu). |
||
Bubák Profil |
#5 · Zasláno: 13. 4. 2016, 12:19:12
Co tak použít urlencode, ale tam nevím, zda by mohl nastat problém, nebo base64.
|
||
jirka2 Profil |
#6 · Zasláno: 13. 4. 2016, 13:27:09
Bubák:
Base64 není špatný nápad, nutno však provést úpravy výsledného řetězce. |
||
juriad Profil |
#7 · Zasláno: 13. 4. 2016, 13:37:18
jirka2:
Tady máš hotové řešení pro použití base64: php.net/manual/en/function.base64-encode.php#103849 |
||
Martin2 Profil * |
#8 · Zasláno: 13. 4. 2016, 15:24:33
Pokud tu hodnotu nebudeš potřebovat převádět zpět, tak by mohl stačit i nějaký hash. Například
crc32() nebo (zkrácený) md5()
|
||
Chamurappi Profil |
#9 · Zasláno: 13. 4. 2016, 16:02:18
Reaguji na jirku2:
„v tagu ID není dovoleno kódování UTF8“ Chtěl bych podotknout, že atributy nemůžou zakazovat žádné kódování. Můžou omezovat škálu dovolených znaků v hodnotě, ale u ID moc omezené nejsou. Česká slova v ID nevadí, v zápisu id="plášť" nevidím žádný problém.
|
||
jirka2 Profil |
#10 · Zasláno: 13. 4. 2016, 18:39:07
Chamurappi:
Abych to vysvětlil: nejprve jsem použil samotnou funkci urlencode(), s to mi to však nepracovalo. Narazil jsem na stejný dotaz a to mě zmátlo. Tato diskuse mě však pomohla. Takže s češtinou to funguje, dokonce i když jde o více slov oddělených mezerou. To by mohlo dělat problémy, proto jsem se přiučil u wiki, kde mezery nahrazují podtržítkem. Nyní jsem spokojen. Děkuji všem. |
||
Časová prodleva: 8 let
|
0