Autor | Zpráva | ||
---|---|---|---|
ssssa Profil * |
#1 · Zasláno: 10. 4. 2009, 07:34:53
Dobrý den, chtěl bych se zeptat, jestli existuje nějaká php funkce, která by mi např. ze slov ,,Kočka leze dírou,, vytvořila žetězec tohoto znění: ,,kocka-leze-dirou,,
|
||
Joker Profil |
#2 · Zasláno: 10. 4. 2009, 07:48:22
strtr Je samozřejmě potřeba definovat, který znak se nahradí kterým. |
||
Taps Profil |
#3 · Zasláno: 10. 4. 2009, 08:01:13
|
||
ssssa Profil * |
#4 · Zasláno: 10. 4. 2009, 08:43:26
Díky, ale bohatě jsem si vystačil se str_replace a strtolower. Výsledný kod tedy vypadá:
$url = str_replace(array("á","č","ď","é","ě","í","ľ","ň","ó","ř","š","ť","ú","ů","ý ","ž","Á","Č","Ď","É","Ě","Í","Ľ","Ň","Ó","Ř","Š","Ť","Ú","Ů","Ý","Ž"), array("a","c","d","e","e","i","l","n","o","r","s","t","u","u","y ","z","A","C","D","E","E","I","L","N","O","R","S","T","U","U","Y","Z"), $url); $url = strtolower($url); $url = str_replace(array(" ", "_"), "-", $url); $url = str_replace(Array("(",")",".","!",",","\"","'"), "", $url); |
||
cistax Profil |
#5 · Zasláno: 10. 4. 2009, 16:50:13
ja mam jeste jedno reseni
<?php function BezDk($string) { $string = str_replace( array('ě','š','č','ř','ž','ý','á','í','é','ó','ů','ú','ň','ť','ď',' ','_','Ě','Š','Č','Ř','Ž','Ý','Á','Í','É','Ó','Ů','Ú','Ň','Ť','Ď'), array('e','s','c','r','z','y','a','i','e','o','u','u','n','t','d','-','-','E','S','C','R','Z','Y','A','I','E','O','U','U','N','T','D'), $string ); $string = strtolower($string); $pattern = '#([a-z0-9\-]+)#is'; $slug = ''; for($i = 0; $i < strlen($string); $i++) { if(preg_match($pattern,$string[$i])) $slug .= $string[$i]; } $url = $slug; return $url; }?> a nez pravdepodobne ulozis do db nazev clanku pro url tak udelej treba ve zpracujicim skriptu $_POST["clanek"] = BezDK($_POST["clanek"]); a melo by to byt |
||
blizz_boz Profil |
#6 · Zasláno: 10. 4. 2009, 18:44:01
ale môže nastať situácia keď 2 rôzne nadpisy s diakritikou budú mať ten istý tvar uri bez diakritiky.
preto by mal skript najprv skontrolovať či už taká uri v databáze neexistuje a ake hej tak pridať na koniec uri nejaké číslo. |
||
blizz_boz Profil |
#7 · Zasláno: 11. 4. 2009, 14:04:51
inak prečo sa vobec z uri odstranuje diakritika?
|
||
AM_ Profil |
#8 · Zasláno: 11. 4. 2009, 15:07:42
Diakritiku můžeš předávat pomocí %hex sekvencí, ale když chceš mít pěknou url, tak to tam nemá co dělat. Zkrátka nepatří mezi platné znaky, které v URL mohou být.
|
||
imploder Profil |
#9 · Zasláno: 11. 4. 2009, 15:10:12
AM_
„Zkrátka nepatří mezi platné znaky, které v URL mohou být.“ Omezení [-a-zA-Z0-9] platí jenom pro domény, jinde můžou být i jiné znaky - třeba Wikipedie má vždycky v URL název článku včetně diakritiky. |
||
blizz_boz Profil |
#10 · Zasláno: 11. 4. 2009, 15:53:06
„o domény, jinde můžou být i jiné znaky - třeba Wikipedie má vždycky v URL název článku včetně diakritiky.“
ja som si dokonca vytvoril funkciu na tvorbu cool uri poporujúcu diakritiku: function coolUri($title) { mb_internal_encoding("UTF-8"); $uri = str_replace(array('$', '&', '+', ',', '/', ':', ';', '=', '?', '@', '<', '>', '#', '%', '{', '}', '|', '\\', '^', '~', '[', ']', '`'), '', $title); $uri = trim($uri); $uri = str_replace(' ', '-', $uri); return mb_strtolower($uri); } a funguje to bez problémov |
||
Časová prodleva: 17 let
|
0