perl: Получить путь из полного имени файла
Добавлено: 2007-10-17 13:41:49
Как проще получить путь имея полное имя файла? Т.е. есть /usr/home/urgor/site/images/icons/disk.png, а мне надо получить /usr/home/urgor/site/images/icons/
Если проблема не решается сама, значит она неразрешима
https://forum.lissyara.su/
Код: Выделить всё
man dirname
Странно, но это мне и в голову не приходило...lissyara писал(а):или на перле - искать последний слэш и от него плясать...
Таки, однаlissyara писал(а):несложно, на php строки две три было бы...
Код: Выделить всё
my $dirname = substr($filename, 0, rindex($filename, '/'));
Это как? Добавить еще пару страниц комментариев?lissyara писал(а):тока я последнее время стараюсь понятно писать
Код: Выделить всё
mail# more before_sql_functions.php | iconv -f cp1251 -t koi8-r
<?php
// функции используемые до соединения с БД
// начат 2007-10-01 в 22:06
// проблема про которую сообразил до момента первого запуска
// скрипта. ввиду использования перезаписи адресов, url на
// строне браузера пользователя будет выглядеть не так, как на стороне сервера.
// надо определить реальный путь, и достать путь на стороне сервера...
// переменная апача с реальным путём до реального скрипта.
// SCRIPT_FILENAME /usr/local/www/data/my_sites/www.newautomobile.ru/2007-10-01/phpinfo.php (_SERVER["PATH_TRANSLATED"])
// все скрипты будут лежать в корне сайта, поэтому, задача несложная - из URL вычленить путь до
// директории где реально лежат файлы
// DOCUMENT_ROOT /usr/local/www/data
// переменная с путём до корневой директории сервера.
// нужный кусок пути будет для этих двух переменных будет такой: /my_sites/www.newautomobile.ru/2007-10-01/
// вычисляем кусок пути, который видит юзер - /my_sites/www.newautomobile.ru/2007-10-01/phpinfo.php
$user_side_part_url = str_replace($_SERVER["DOCUMENT_ROOT"], "", $_SERVER["PATH_TRANSLATED"]);
//echo $user_side_part_url;
// ищем позицию последнего слэша
$last_slash = strrpos($user_side_part_url, "/");
//echo "last slash = " . $last_slash;
// высчитываем собственно URL без имени файла, то, ради чего и затевалось
$request_dir = substr ($user_side_part_url, 0, $last_slash);
//echo $request_dir;
// удаляем использованные промежуточные переменные
unset($user_side_part_url);
unset($last_slash);
// на выходе имеем 1 переемнную - $request_dir - с полным путём до корня сайта
?>
Код: Выделить всё
mail# more ../index.php | iconv -f cp1251 -t koi8-r | more
<?php
// индексный файл.
// в нём будет скелет логики сайта
// начат 2007-10-01 в 20:43
// поехали. то, что выше этого - временное явление, на период настройки и отладки.
// предварительный шаблон реального URL
// /catalog/bmw/310/ == index.php?catalog=1&marka=bmw&model=310
// пиздец. либо думать и строить соответствие числовых полей названиям,
// либо искать прямо по названиям.
// второй вариант намнго проще сделать, но в плане нагрузки на сервер - тяжелее..
// наверно пока будет второй :) цена за гигагерц проца всё ниже и ниже...
// блин, где то время, когда мой сайт со свистом ворочался на 166 первом пне...
// функции используемые до подключения к БД - в основном, на случай если это самое
// подключенние не удасться, ну и вообще - мало ли...
require_once("includes/before_sql_functions.php");
Код: Выделить всё
$a = '/usr/home/urgor/site/images/icons/disk.png';
$a =~ /^(\/.+\/)/;
print $1