Autor Zpráva
ssssa
Profil *
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
strtr

Je samozřejmě potřeba definovat, který znak se nahradí kterým.
Taps
Profil
ssssa
http://php.vrana.cz/vytvoreni-pratelskeho-url.php
ssssa
Profil *
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
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
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
inak prečo sa vobec z uri odstranuje diakritika?
AM_
Profil
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
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
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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