|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hi,
I'm using php 4.4.4. Given two variables, $dir1 = "/usr/local/apache2/htdocs/" $dir2 = "/usr/local/apache2/htdocs" What is a comparison function I could write that would say these two directories are the same? A straight string comparison would not work above. Thanks for any insights, - Dave |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Thu, 28 Feb 2008 18:57:11 +0100, laredotornado@zipmail.com
<laredotornado@zipmail.com> wrote: > Hi, > > I'm using php 4.4.4. Given two variables, > > $dir1 = "/usr/local/apache2/htdocs/" > $dir2 = "/usr/local/apache2/htdocs" > > What is a comparison function I could write that would say these two > directories are the same? A straight string comparison would not work > above. $is_the_same_dir = realpath($dir1) == realpath($dir2); -- Rik Wasmus |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
*** Rik Wasmus escribió/wrote (Thu, 28 Feb 2008 19:00:09 +0100):
>> $dir1 = "/usr/local/apache2/htdocs/" >> $dir2 = "/usr/local/apache2/htdocs" >> > $is_the_same_dir = realpath($dir1) == realpath($dir2); Just two remarks: - In Unix, the file system is case sensible. So (depending on what you need this for) you may use === instead. - realpath() returns FALSE when the path does not exist; take it into account. -- -+ http://alvaro.es - Álvaro G. Vicario - Burgos, Spain ++ Mi sitio sobre programación web: http://bits.demogracia.com +- Mi web de humor austrohúngaro: http://www.demogracia.com -- |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Ãlvaro G. Vicario wrote:
> Rik Wasmus escribió/wrote: >> >> $is_the_same_dir = realpath($dir1) == realpath($dir2); > > - In Unix, the file system is case sensible. So (depending on what you > need this for) you may use === instead. The '==' operator is sufficient, as it is case-sensitive. The '===' will also work, but is not required. > - realpath() returns FALSE when the path does not exist; take it into > account. This may indeed cause problems, depending on exactly what the OP is hoping to compare -- the directory paths of real, existing directories, or strings representing directories which may or may not exist. A possibility would be to replace realpath above with normalise_dirname: function normalise_dirname ($dir) { if (realpath($dir)) return realpath($dir); if (preg_match('#/$#', $dir)) return $dir; return "$dir/"; } If you needed to, you could further enhance it to deal with path components like '.' and '..'. -- Toby A Inkster BSc (Hons) ARCS [Geek of HTML/SQL/Perl/PHP/Python/Apache/Linux] [OS: Linux 2.6.17.14-mm-desktop-9mdvsmp, up 30 days, 22:28.] Bottled Water http://tobyinkster.co.uk/blog/2008/02/18/bottled-water/ |
|
![]() |
| Outils de la discussion | |
|
|