.NET Path.Combine() in PHP
Wednesday, September 1st, 2010I’m the type of person who prefers to do things in a way that I perceive as the proper or correct way. While this tends to make things take a bit longer to accomplish, I feel the result ends up being better overall. One such thing I noticed is that file and path handling in PHP was missing a function I used quite a bit when writing C# code. In C# there is a Path.Combine() function that appends two file paths together to form one complete path without having to care what the beginning character and ending character of the two paths are. I wrote up a little function in PHP to mimic what happens.
//take a path and/or a filename and combine them into one file path
function filePathCombine($path1, $path2)
{
$completedPath = '';
if(substr($path1, strlen($path1) - 2, strlen($path1) - 1) !== DIRECTORY_SEPARATOR)
{
$completedPath = $path1 . DIRECTORY_SEPARATOR;
}
else
{
$completedPath = $path1;
}
if(substr($path2, 0, 1) !== DIRECTORY_SEPARATOR)
{
$completedPath .= $path2;
}
else
{
$completedPath .= substr($path2, 1, strlen($path2) - 1);
}
return $completedPath;
}
Looking through the code you will notice DIRECTORY_SEPARATOR, which is a global PHP constant. While it isn’t needed considering using / instead of \ would work on Windows and Linux, I thought it best to try to stay with my idea on how to do things the proper way.
