modifier.collapse_path.php 538 B

123456789101112131415161718192021222324
  1. <?php
  2. // Turn foo/../bar/../baz/ into baz/
  3. function smarty_modifier_collapse_path($p)
  4. {
  5. $p=explode('/', $p);
  6. $o=array();
  7. for ($i=0; $i<sizeof($p); $i++)
  8. {
  9. // Skip meaningless . or empty terms.
  10. if (''==$p[$i] || '.'==$p[$i])
  11. continue;
  12. // Consider if we can pop something off the list.
  13. if ('..'==$p[$i] && $i>0 && '..'!=$o[sizeof($o)-1])
  14. {
  15. array_pop($o);
  16. continue;
  17. }
  18. array_push($o, $p[$i]);
  19. }
  20. return implode('/', $o);
  21. }
  22. ?>