Avatar
Bogdan
Redaktor
Avatar
Bogdan:17.9.2016 15:29

Hoj,
nemáte někdo hotový script na čištění url od diakritiky a dalších znaku?

Mam tohle:

$url = str_replace(
    Array("á", "č", "ď", "é", "ě", "í", "ľ", "ň", "ó", "ř", "š", "ť", "ú", "ů", "ü", "ý", "ž", "Á", "Č", "Ď", "É", "Ě", "Í", "Ľ", "Ň", "Ó", "Ř", "Š", "Ť", "Ú", "Ů", "Ý", "Ž"),
    Array("a", "c", "d", "e", "e", "i", "l", "n", "o", "r", "s", "t", "u", "u", "u", "y", "z", "A", "C", "D", "E", "E", "I", "L", "N", "O", "R", "S", "T", "U", "U", "Y", "Z"), $url);
$url = str_replace(Array(" ", "_", ".", "&", "+", "/"), "-", $url);
$url = str_replace(Array("---", "--"), "-", $url);
$url = str_replace(Array("(", ")", "!", "?", ",", "\"", "'", "„", "“", "[", "]"), "", $url);
$url = strtolower($url);
return $url . '-' . time();

Ale nelíbí se mi to, jelikož pokaždé se najde nějaký znak co mi pokazí URL. Hlavně mi to blbne, když je v textu mezera, někdy jí to nahradí za "-", někdy ne. :(

 
Odpovědět 17.9.2016 15:29
Avatar
hitzoR
Člen
Avatar
hitzoR:17.9.2016 15:49

Co takhle použít Nette/Utils? Případně se jím inspirovat.

edit: Ikdyž teda koukám že to stejně háčky a čárky nepřevede, takže ti to je k ničemu :D

Editováno 17.9.2016 15:52
 
Nahoru Odpovědět 17.9.2016 15:49
Avatar
hitzoR
Člen
Avatar
hitzoR:17.9.2016 15:53

Ale první nahradit háčky a čárky pomocí funkce, co už máš, a pak to prohnat přes webalize by bylo asi ideální.

... sakra, co to je za blbé omezení, že můžu editovat zprávu snad jen minutu po odeslání? :D

 
Nahoru Odpovědět 17.9.2016 15:53
Avatar
shaman
Člen
Avatar
Odpovídá na Bogdan
shaman:17.9.2016 16:00

Ignoruj to nette/utils, je to skoro tak zle riesenie ako to tvoje. Take riesenia budu zlyhavat donekonecna pokial budes mapovat jeden znak za druhy. Nezabudni ze nemci maju dalsie znaky, greci, rusi, cinania a japonci .... maju zase ine znaky. Odporucam ti poobzerat sa po nejakej hotovej kniznici na githube a includnut ju cez composer. napr: https://github.com/…book/slugger vyzera slubne.

PS: koleso uz bolo vynajdene, tak ho predsa nebudes kodovat odznova?

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 17.9.2016 16:00
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Bogdan
Redaktor
Avatar
Odpovídá na shaman
Bogdan:17.9.2016 16:08

Díky, ono právě jsem projel googlem, a každé řešení co bylo označeno jako kvalitní nějak nefunguje, znaky s diakritikou to prostě převede na null.
Ten odkaz cos poslal, vypadá, že by snad i fungoval, zkusím to večer. Díky:)

 
Nahoru Odpovědět  +1 17.9.2016 16:08
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Bogdan
IT Man:17.9.2016 16:31

A co tak použít Regex při přijímání?

if (!preg_match('/a-z0-9\-/', $url, $matches))
    echo 'URL obsahuje špatné znaky.';
Nahoru Odpovědět 17.9.2016 16:31
Usmívej se, zítra už tvůj kód nemusí fungovat!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.