Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подстановка любой директории выше текущей
 
 автор: julpierto   (21.02.2013 в 13:41)   письмо автору
 
 

Добрый день, уважаемые форумчане!
Необходимо сделать инклуд на файл в директории выше текущей, если он существует. Пытаюсь реализовать с помощью регулярных выражений, прошу помочь с синтаксисом или реализацией:

$path = $_SERVER['DOCUMENT_ROOT'];
$var = "/"."\\S+";

if(file_exists($path."/file.php"))
{
  @include_once($path."/file.php");
}
else if(file_exists($path.$var."/file.php"))
{
  @include_once($path.$var."/file.php");
}
else
{
  print("file not found.");
  exit;
}

  Ответить  
 
 автор: Sfinks   (21.02.2013 в 15:58)   письмо автору
 
   для: julpierto   (21.02.2013 в 13:41)
 

А почему не воспользоваться относительными путями, а не абсолютными?
<?php
  
if(file_exists("../file.php")) 
    @include_once(
"../file.php"); 
  elseif(
file_exists("../somedir/file.php")) 
    @include_once(
"../somedir/file.php"); 
  else 
    exit(
"file not found.");

  Ответить  
 
 автор: julpierto   (21.02.2013 в 22:58)   письмо автору
 
   для: Sfinks   (21.02.2013 в 15:58)
 

Sfinks, в принципе без разницы, но вместо
@include_once("../somedir/file.php"); 

должна быть любая директория

  Ответить  
 
 автор: Sfinks   (22.02.2013 в 09:40)   письмо автору
 
   для: julpierto   (21.02.2013 в 22:58)
 

А, то есть вы хотите произвести поиск по всем директориям?
Ну тут никакие РВ не поддерживаются. Возможно только циклом перебрать все директории.
Примерно так:
<?php
  
if(file_exists("../file.php"))  
    @include_once(
"../file.php");  
  else{
    
$found false;
    
$dir opendir('..');
    while ( (
$file readdir($dir)) !== false )
      if( 
$file!=='.' && $file!=='..' && is_dir($file) && file_exists("../{$file}/file.php") ){
        
$found true;
        
closedir($dir);
        @include 
"../{$file}/file.php";
        break;
      }
  }
  if( !
$found ) exit("file not found.");
?>

  Ответить  
 
 автор: julpierto   (22.02.2013 в 10:55)   письмо автору
 
   для: Sfinks   (22.02.2013 в 09:40)
 

Только через цикл, понял Вас - спасибо огромное!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования