示例#1
0
<?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";