<?php /* Prototype: string basename ( string $path [, string $suffix] ); Description: Given a string containing a path to a file, this function will return the base name of the file. If the filename ends in suffix this will also be cut off. */ $file_paths = array(array("bar"), array("/foo/bar"), array("foo/bar"), array("/bar"), array("bar/"), array("/bar/"), array("/foo/bar/"), array("foo/bar/"), array("/bar/"), array("bar.gz", ".gz"), array("bar.gz", "bar.gz"), array("/foo/bar.gz", ".gz"), array("foo/bar.gz", ".gz"), array("/bar.gz", ".gz"), array("bar.gz/", ".gz"), array("/bar.gz/", ".gz"), array("/foo/bar.gz/", ".gz"), array("foo/bar.gz/", ".gz"), array("/bar.gz/", ".gz"), array("/.gz", ".gz"), array(".gz", ".gz"), array("/foo/.gz", ".gz"), array(".gz/", ".gz"), array("/foo/.gz/", ".gz"), array("foo/.gz/", ".gz"), array("foo" . chr(0) . "bar"), array("/foo" . chr(0) . "bar"), array("/foo" . chr(0) . "bar/"), array("foo" . chr(0) . "bar/"), array("foo" . chr(0) . "bar/test"), array("/foo" . chr(0) . "bar/bar.gz", ".gz"), array("/foo" . chr(0) . "bar/bar.gz")); function check_basename($path_arrays) { $loop_counter = 1; foreach ($path_arrays as $path) { echo "\n--Iteration {$loop_counter}--\n"; $loop_counter++; if (1 == count($path)) { // no suffix provided var_dump(basename($path[0])); } else { // path as well as suffix provided, var_dump(basename($path[0], $path[1])); } } } echo "*** Testing basic operations ***\n"; check_basename($file_paths); echo "Done\n";
foreach ($path_arrays as $path) { echo "\n--Iteration {$loop_counter}--\n"; $loop_counter++; if (1 == count($path)) { // no suffix provided var_dump(basename($path[0])); } else { // path as well as suffix provided, var_dump(basename($path[0], $path[1])); } } } echo "*** Testing basic operations ***\n"; check_basename($file_paths); echo "\n*** Testing possible variations in path and suffix ***\n"; check_basename($file_path_variations); echo "\n*** Testing error conditions ***\n"; // zero arguments var_dump(basename()); // more than expected no. of arguments var_dump(basename("\\blah\\tmp\\bar.zip", ".zip", ".zip")); // passing invalid type arguments $object = new stdclass(); var_dump(basename(array("string\\bar"))); var_dump(basename(array("string\\bar"), "bar")); var_dump(basename("bar", array("string\\bar"))); var_dump(basename($object, "bar")); var_dump(basename($object)); var_dump(basename($object, $object)); var_dump(basename("bar", $object)); echo "Done\n";