Autor | Zpráva | ||
---|---|---|---|
Pavel Straka Profil |
#1 · Zasláno: 4. 5. 2012, 23:37:49
Dobrý večer, snažím se vytvořit hezké URL adresy tak, že z výchozího řetězce odstraním diakritiku a různé paznaky. Takto:
function url($text) { $text = strtr($text, "áäčďéěëíµňôóöŕřšťúůüýžÁÄČĎÉĚËÍĄŇÓÖÔŘŔŠŤÚŮÜÝŽ", "aacdeeeilnooorrstuuuyzaacdeeelinooorrstuuuyz"); $text = preg_replace("~[^\\pL0-9_]+~u", "-", $text); $text = trim($text,"-"); $text = StrToLower($text); $text = preg_replace("~[^-a-z0-9_]+~", "", $text); return $text; } Můj problém: pokud je ve výchozím textu např. znak: ´ , funkce nevrátí vůbec nic. Je nějaký způsob, jak mohu stoprocentně zajistit, aby se cokoliv, co uživatel zadá, správně převedlo na text hezké URL? Děkuj za rady. |
||
Davex Profil |
Tento kód je jakýsi pokus o hybrida, protože pro kódování utf-8 se takto nedá použít funkce
strtr() a pro jiná kódování nelze použít regulární výraz v prvním preg_replace() .
Po opravení té funkce v souladu s originálem by to mělo fungovat spolehlivě pro kódování utf-8. |
||
Pavel Straka Profil |
#3 · Zasláno: 5. 5. 2012, 00:31:50
A pro kódování windows-1250 nemohu ten kód použít?
|
||
Davex Profil |
#4 · Zasláno: 5. 5. 2012, 00:41:53
Ano, ale regulární výraz v prvním
preg_replace() se musí upravit (asi na "~[^a-zA-Z0-9_]+~" ). Nezkoušel jsem.
|
||
Pavel Straka Profil |
#5 · Zasláno: 5. 5. 2012, 01:11:56
Abych se přiznal nerozumím tomu, tento příkaz už v té funkci je obsažen. Jakým způsobem tedy připravím funkci pro hezké URL v kódování cp-1250?
|
||
Davex Profil |
#6 · Zasláno: 5. 5. 2012, 18:36:27
Řádek
$text = preg_replace("~[^\\pL0-9_]+~u", "-", $text); by mělo stačit přepsat na $text = preg_replace("~[^a-zA-Z0-9_]+~", "-", $text); |
||
Časová prodleva: 12 let
|
0