2013-06-18 6 views
0

У меня есть переменный $ путь, который содержит полный путь к файлу в сети Windows, (например R:\somedir\otherdir\lastdir\some.file.ext)PHP имя_директория() падает весь путь

, когда я использую:

$location = dirname($path); 

здесь, $location только регистрирует значение .

Что я делаю неправильно?

+0

из руководства: 'Начиная с PHP 4.3.0, вы часто будете получать слэш или точку назад от (имя папки) в ситуациях, когда старший функциональность дал бы вам пустую string.' я предлагаю прочитать примечания здесь: http://php.net/manual/en/function.dirname.php – sgroves

+0

Спасибо, что прочитал эту запись, $ path содержит слэши, поэтому я не уверен, что происходит. – CurrySoup

+0

содержит обратную косую черту, а не косые черты – sgroves

ответ

1

Вы используете неправильный слеш. Вместо того, чтобы использовать обратную косую черту \ использовать обычную косую черту /

путь к файлу и URI различны. \ правильно в файле Windows путь и/является правильным в URI.

Так что этот путь к файлу: C: \ Documents \ Foo переводит на этот URI: файла: /// C:/Documents/Foo

Из документации PHP:

Если в пути нет косой черты, возвращается точка ('.'), указывая текущий каталог. В противном случае возвращаемая строка - это путь с любым удаленным/компонентом .

Это означает, что проблема в том, что ваши косые черты ошибочны.

http://php.net/manual/en/function.dirname.php

0

Рассмотрите возможность использования форвард-люка '/'.

+0

Спасибо, я попробовал это, хотя и не отделяет имя файла от конца. – CurrySoup

+1

он использует обратную косую черту - это косая черта (\ является черной краской) – sgroves

+0

Есть ли все-таки изменить слэши на обратную косую черту в строке? Строка создается тегом в форме HTML. – CurrySoup

Смежные вопросы