Autor | Zpráva | ||
---|---|---|---|
Tori Profil |
#1 · Zasláno: 18. 11. 2011, 22:34:45
Pěkný večer,
napsala jsem si funkci, která vrací relativní cestu nebo URL mezi dvěma zadanými. Jak by to šlo napsat líp? Díky moc za názor. /** * Porovná dvě cesty nebo URL a vypíše relativní cestu mezi nimi. * @param string $cur Současná adresa/cesta * @param string $new Cílová adresa/cesta * @param string $delim Oddělovač. Výchozí je "/". * @return string */ function relativePath($cur, $new, $delim='/') { $out = ''; $cur = ltrim($cur, ' /\\'); $new = ltrim($new, ' /\\'); $cur = explode($delim, $cur); array_pop($cur); $new = explode($delim, $new); $file = array_pop($new); /* porovnej delky */ $lnDiff = count($cur) - count($new); /* novy link je delsi */ if ($lnDiff < 0) { while (++$lnDiff <= 0) { $file = array_pop($new) . $delim . $file; } /* soucasny link je delsi */ } elseif ($lnDiff > 0) { while (--$lnDiff >= 0) { $out .= "..$delim"; } } /* porovnej cesty */ $tmp = ''; $ln = count($new); for ($i = 0; $i < $ln; $i++) { if ($cur[$i] !== $new[$i]) { $out .= str_repeat("..$delim", ($ln-$i)) . implode($delim, $new) . $delim; break; } else { unset($new[$i]); } } return ($out === '') ? ".$delim" . $file : $out . $file; } |
||
Mastodont Profil |
#2 · Zasláno: 18. 11. 2011, 23:07:34
Takové funkce jsou v manuálu:
http://php.net/manual/en/function.realpath.php |
||
Tori Profil |
#3 · Zasláno: 18. 11. 2011, 23:35:16
Mastodont:
Možná jsem přehlédla existující funkci, ale určitě to není realpath. Jednak realpath je vázaná na filesystem („realpath() returns FALSE on failure, e.g. if the file does not exist.“), ale hlavně funguje právě opačně. -- toto je URL aktuální stránky: /clanky/123-nejaky clanek/komentare -- a chci odkázat na /clanky/podleRoku/2010 -- takže potřebuju získat: ../podleRoku/2010 |
||
Mastodont Profil |
#4 · Zasláno: 18. 11. 2011, 23:42:30
Tori:
Já nemyslím přímo funkci realpath, ale komentáře k té funkci ... například http://www.php.net/manual/en/function.realpath.php#105876 |
||
Tori Profil |
#5 · Zasláno: 18. 11. 2011, 23:54:38
Mastodont:
Oj, do komentářů jsem se nepodívala. Ta odkázaná funkce je rychlejší a podstatně hezčí (přidává navíc jedno "../" kvůli názvu souboru, ale to je maličkost). Děkuju a omlouvám se. |
||
Časová prodleva: 13 let
|
0