Часто нужно воспользоваться частью url-адреса. Допустим в вас такой url: http://training-web.ru/img/php/img1.jpg. Как найти папку в которой находится картинка PHP. Предлагаю вам посмотреть на функцию getDir().
function getDir($str)
{
$num = strrpos($str, '/');
$num += 1;
$res = substr($str, $num);
return $res;
}
echo getDir('http://training-web.ru/img/php/img1.jpg');
Функция strrpos() возвращает позицию последнего вхождения подстроки в строке. При помощи strrpos получаем позицию в строке в виде числа. Функция substr() возвращает подстроку. Благодаря входному параметру $num срезается часть строки после заданной позиции ($num). Я добавил 1 к $num, так как символ слеша тоже занимает место.
Хочу вам показать еще один способ. Существует функция pathinfo. Она возвращает информацию о пути к файлу. Вы можете получить как название файла, так и его расширение. Вам нужно выбрать соответствующую константу и передать её в качестве входного параметра.
define('PATH', "dir1/dir2/dir3/dir4/file.php");
$url = 'dir1/dir2/dir3/dir4/file.php';
echo PATH." - путь";
echo basename($url)."- название файла + расширение";
echo pathinfo(PATH, PATHINFO_DIRNAME)." - путь + директория";
echo pathinfo(PATH, PATHINFO_BASENAME)." - название файла + расширение";
echo pathinfo(PATH, PATHINFO_EXTENSION)." - расширение файла";
echo pathinfo(PATH, PATHINFO_FILENAME)." - название файла";
/*
Вывод:
dir1/dir2/dir3/dir4/file.php - путь
file.php- название файла + расширение
dir1/dir2/dir3/dir4 - путь + директория
file.php - название файла + расширение
php - расширение файла
file - название файла
*/
Очень часто нужно автоматически определить местоположение файла. Ошибка в пути приводит к остановке скрипта. Для этого существуют специальные серверные переменные. Например $_SERVER['PWD'] - показывает текущее расположение файла, начиная от самого начала. Используют эту переменную в серверном программировании. Её аналог константа __DIR__. Переменная $_SERVER['PWD'] не всегда работает, поэтому используйте константу __DIR__. Читайте про массив $_SERVER в статье массив $_SERVER в PHP. Допустим, у вас есть приложение app. Для того чтобы запустить скрипт при помощи CRON необходимо прописывать абсолютный путь до скрипта. Константа __DIR__ прекрасно справляется с определением пути. Если не пользоваться константами и серверной переменными, то вы можете попасть в неприятную ситуацию. Если путь был изменён (переименовали папку), то возникнет ошибка и вам придётся изменять пути во всех скриптах.
include_once('/folder1/folder2/folder3/app/file.php');
include_once('/folder1/folder2/folder3/app/parts/file.php');
#или с константой __DIR__
include_once(__DIR__.'/app/file.php');
include_once(__DIR__.'/app/parts/file2.php');