Autor | Zpráva | ||
---|---|---|---|
seberm Profil * |
#1 · Zasláno: 27. 5. 2009, 20:35:50
Dobry den.
Na programujte.com jsem nasel navod (http://programujte.com/index.php?akce=clanek&cl=2006092301-vytvarime-srozumitelne-url-adresy-z-nazvu-clanku) na vytvoreni SEO adres pro clanky. Pokud ale moje funkce dostane parametr napriklad "zkouška", vrati hodnotu "zkouy-ka". Nepomohl by mi prosim nekdo naleznout chybu? "Moje" funkce vypada takto: public function getNewsName ($title) { /* Zakomentovano kvuli bugu v php (http://bugs.php.net/bug.php?id=32244) -nefunguje na mem php (verze 5.2.9) */ //$title = iconv("UTF-8", "ISO-8859-2", $title); $title = StrTr ($title, "ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýž ", "AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz-"); $title = StrToLower($title); //...Znaky abecedy + cisla, vyjimaje specialnich znaku - ty jsou nahrazeny > "-" $pattern = "/[^[:alpha:][:digit:]]/"; $replacement = "-"; $title = Preg_Replace ($pattern, $replacement, $title); //...Odstranenni znaku "-" z konce a zacatku retezce $title = Trim ($title, "-"); //...Pokud se nekde znak "-" opakuje vicekrat za sebou, je nahrazen jednim $pattern = "/[-]+/"; $replacement = "-"; $title = Preg_Replace ($pattern, $replacement, $title); return $title; } Chyba bude nejspise ve spatne definici parametru pro funkci strtr() a naslednemu volani preg_replace se spatnym $pattern. |
||
tiso Profil |
#2 · Zasláno: 27. 5. 2009, 20:44:12
seberm - nechaj si vypísať $title po riadku 5, ak to bude vyzerať rovnako, tak máš problém s kódovaním..
|
||
Jack Finger Profil |
#3 · Zasláno: 27. 5. 2009, 22:02:00 · Upravil/a: Jack Finger
Místo
$title = StrTr ($title, "ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýž ", "AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz-"); použij $title = strtr($title, array('Á' => 'A', 'Ä' => 'A', 'Č' => 'C', ........)); popř. jednodušeji $title = strtr($title, array(array('Á','Ä') => 'A', 'Č' => 'C', ........)); Edited at 22:04. |
||
blizz_boz Profil |
#4 · Zasláno: 28. 5. 2009, 00:05:46 · Upravil/a: blizz_boz
moja funkcia je omnoho jednoduchšia, vpodstate robí to isté iným spôsobom:
function coolUri($title) { mb_internal_encoding("UTF-8"); $uri = str_replace(array('$', '&', '+', ',', '/', ':', ';', '=', '?', '@', '<', '>', '#', '%', '{', '}', '|', '\\', '^', '~', '[', ']', '`'), '', $title); $uri = trim($uri); $uri = str_replace(' ', '-', $uri); return mb_strtolower($uri); } |
||
Jack Finger Profil |
#5 · Zasláno: 28. 5. 2009, 06:59:10
blizz_boz
Jenže neřeší problém diakritiky, možná proto, že neřeší diakritiku vůbec. |
||
seberm Profil * |
#6 · Zasláno: 28. 5. 2009, 15:17:23
Dekuji moc za reakce. Jdu to vyzkouset :-)
|
||
blizz_boz Profil |
#7 · Zasláno: 28. 5. 2009, 15:23:13
Jack Finger
moja funkcia podporuje diakritiku v UTF8 , vsetko bez problemov funguje pozri si moju stranku: http://www.ipremiere.eu |
||
DJ Miky Profil |
#8 · Zasláno: 28. 5. 2009, 15:33:09
„moja funkcia podporuje diakritiku v UTF8 , vsetko bez problemov funguje“
Ale neřeší ji, proto pak vznikají šílenosti typu "Aké kritériá by mal spĺňať každý model?" → "ak%C3%A9-krit%C3%A9ri%C3%A1-by-mal-sp%C4%BA%C5%88a%C5%A5-ka%C5%BEd%C3%BD-model" |
||
seberm Profil * |
#9 · Zasláno: 28. 5. 2009, 16:06:00
Takze, reseni je zde:
public function getNewsName ($title) { $table = array( 'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r', ); $title = Strtr($title, $table); $title = StrToLower($title); //...Znaky abecedy + cisla, vyjimaje specialnich znaku - ty jsou nahrazeny > "-" $pattern = "/[^[:alpha:][:digit:]]/"; $replacement = "-"; $title = Preg_Replace ($pattern, $replacement, $title); //...Odstranenni znaku "-" z konce a zacatku retezce $title = Trim ($title, "-"); //...Pokud se nekde znak "-" opakuje vicekrat za sebou, je nahrazen jednim $pattern = "/[-]+/"; $replacement = "-"; $title = Preg_Replace ($pattern, $replacement, $title); return $title; } |
||
blizz_boz Profil |
#10 · Zasláno: 28. 5. 2009, 16:21:37
|
||
tiso Profil |
#11 · Zasláno: 28. 5. 2009, 16:33:11
|
||
blizz_boz Profil |
#12 · Zasláno: 28. 5. 2009, 16:34:37
tiso
a načo? veď na slovensku po slovensky... |
||
tiso Profil |
#13 · Zasláno: 28. 5. 2009, 16:38:41 · Upravil/a: tiso
blizz_boz „veď na slovensku po slovensky...“
Hej? 1. seberm je čech 2. aj toto je po slovensky? http://ipremiere.eu/category-o-modelingu.html, http://ipremiere.eu/womans-char-A.html |
||
blizz_boz Profil |
#14 · Zasláno: 28. 5. 2009, 17:10:50
tiso
Neni, PHP používa anglickú syntax a ja som zvyknutý používať angličtinu aj v názvoch uri, premenných, polí atd aby som bol konzistentný a nemal bordel v kóde, googlu predsa nevadí angličtina. Obsah mám po slovensky... Aj uri článkov mám po slovensky pretože sa generujú z nadpisov a keď už sú v slovenčine tak by mali byť aj s diakritikou prečo by sme mali ničiť náš jazyk? |
||
karbon Profil * |
#15 · Zasláno: 28. 5. 2009, 18:57:15
Není jednodušší použít skript pana Vrány?
|
||
blizz_boz Profil |
#16 · Zasláno: 28. 5. 2009, 19:12:57 · Upravil/a: blizz_boz
karbonno ale skript od pána vrány bohužial odstraňuje aj diakritiku...
|
||
Jack Finger Profil |
#17 · Zasláno: 28. 5. 2009, 23:16:37
„ale skript od pána vrány bohužial odstraňuje aj diakritiku...“
Ano, přesně o to jde! |
||
blizz_boz Profil |
#18 · Zasláno: 29. 5. 2009, 02:02:24
Jack Finger
no ale ešte tu nikto nevysvetlil že prečo by to malo byť URI bez diakritiky? diakritiku nemože obsahovať pokiaľ viem len URL časť adresy URI, všetko čo sa nachádza za názvom domény môže obsahovať diakritiku, veď aj napríklad Wikipédia ju používa a Google indexuje stránky aj s diakritikou tak kde je problém? |
||
Jack Finger Profil |
#19 · Zasláno: 29. 5. 2009, 07:01:43
blizz_boz
Problém je v tom, že seberm má ve svém kódu: $title = StrTr ($title, "ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýž ", "AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz-"); čímž jasně ukazuje, že tu diakritiku prostě chce odstranit. A my tu teď neřešíme problém Googlu/Wiki a diakritiky, ale problém sebermovy funkce, která špatně převádí diakritiku. |
||
blizz_boz Profil |
#20 · Zasláno: 29. 5. 2009, 14:20:31
Jack Finger
no ale odstraňovanie diakritiky nemá zmysel viac tu: http://ipremiere.eu/davová-psychóza-a-seo-friendly-adresy.html |
||
tiso Profil |
#21 · Zasláno: 29. 5. 2009, 14:44:09
blizz_boz
a: chcem si kúpiť Audi b: nekupuj si Audi, kúp si BMW a: ale ja si chcem kúpiť Audi b: kupovať si Audi nemá zmysel, kúp si BMW... Poprosím ťa: viac sa k tejto téme nevyjadruj! |
||
Chamurappi Profil |
#22 · Zasláno: 29. 5. 2009, 16:18:46
Reaguji na blizz_boze:
S myšlenkou článku docela souhlasím, RFC pro URI považuji za překonané a porušování schvaluji. Ale zjisti si prosím, co je URN, ať nepíšeš voloviny. |
||
blizz_boz Profil |
#23 · Zasláno: 29. 5. 2009, 17:40:38
Chamurappi
už som to prepísal späť na URI... tak ako to teda je s tým názvoslovím? : URI je celá adresa URL a URN sú podmnožiny a URN je časť URI umiestnená za názvom domény? |
||
Chamurappi Profil |
#24 · Zasláno: 29. 5. 2009, 18:56:29
Reaguji na blizz_boze:
Lidsky řečeno: URL je webová adresa. URN je identifikátor syntakticky kompatibilní s URL (zdánlivě je podmnožinou URL), ale nevázaný na systém adres na internetu — jeho účelem je pouze identifikace, nikoliv určení místa. URL a URN jsou podmnožinami URI. Každá URI je buď URL, nebo URN. Obvykle není nutné rozlišovat mezi URI a URL, protože URN jsou dost vzácné. URN vypadají třeba takhle: urn:w3-org-ns:HTML urn:schemas-microsoft-com:vml urn:isbn:80-247-1495-7 |
||
Časová prodleva: 15 let
|
0