Autor Zpráva
jirka2
Profil
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
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
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
Co tak použít urlencode, ale tam nevím, zda by mohl nastat problém, nebo base64.
jirka2
Profil
Bubák:
Base64 není špatný nápad, nutno však provést úpravy výsledného řetězce.
juriad
Profil
jirka2:
Tady máš hotové řešení pro použití base64: php.net/manual/en/function.base64-encode.php#103849
Martin2
Profil *
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
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
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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