Autor | Zpráva | ||
---|---|---|---|
halogan Profil |
#1 · Zasláno: 16. 6. 2005, 20:45:59 · Upravil/a: halogan
Zdravím,
potřeboval jsem vytvořit SEO uri z nadpisu, tak jsem si napsal krátkou funkci, používá jen 2 regexpy, takže je dostatečně rychlá. function seoUri($uri, $maxlength = false, $separator = "-") Má jeden povinný parametr (string) a dva nepovinné - maximální délku a separator (defautně pomlčka) Tato funkce počítá s: - entitama (odřezává) - diakritikou (převádí na písmena bez diak.) - oddělením v půlce slova při zkrácení - nepoužíváním středníku za entitou - UTF-8 (nutno mít nastavené mb_internal_encoding("UTF-8")) Nepočítá však s dlouhým slovem delším než maximální počet znaků. Snad se vám bude líbit a případné otázky či připomínky říkejte zde. |
||
Charlie Profil |
#2 · Zasláno: 16. 6. 2005, 20:48:14
Ano, ano, velmi pěkné. Určitě se mi to bude hodit. Díky!
|
||
Anonymní Profil * |
#3 · Zasláno: 17. 6. 2005, 10:16:37
jen detail v té transformaci (stane se):
"ú" => "ů", jinak je opravdu nezbytné používat regulární výrazy? Já řeším podobný problém ale jen s funkcí strtr($retezec, $hemzy); //nemusim projíždět pole přes foreach a v těch "hemzách" nahrazuji všechny entity pomlčkou, potom nahrazuju opakující se entity a takové věci jako tečka s mezerou za jednu pomlčku. Kód tu teď nemám, ale mohu ho doplnit. Jediné co nedělám je zkracování slov. Domnívám se že jeden strtr s dlouhým polem proběhne rychleji než několik regulárních výrazů po sobě (protože se to interpretuje jen jednou a pak už to řeší jen binární knihovna php) |
||
halogan Profil |
#4 · Zasláno: 19. 6. 2005, 18:40:46
Diky za pripominky, ale strtr nejde, protoze neumi utf. Regularni vyrazy tam jsou jen 2 (a navic pcre), takze to je rychly. Navic to je bez nich slozity a zbytecny.
|
||
llook Profil |
#5 · Zasláno: 19. 6. 2005, 21:07:43
Strtr se dá použít na utf, přesně jak píše Anonymní. Prostě místo dvou řetězců mu dáš jedno pole a pak se klíče pole nahrazují hodnotama. Třeba tohle:
Vypíše "xxxdef". |
||
halogan Profil |
#6 · Zasláno: 21. 6. 2005, 23:41:59
llook: Aha, nevěděl jsem, zkoušel jsem strtr($s, "ěšč", "esc");, teď jsem použil místo foreach ten strtr a jde to v pohodě, díky.
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0