Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Находится ли скрипт в директории
Форумы портала PHP.SU » PHP » Программирование на PHP » Находится ли скрипт в директории

Страниц (1): [1]
 

1. vk - 06 Мая, 2007 - 11:37:01 - перейти к сообщению
Сорри за ламерский вопрос, впал в ступор и не могу сдвинуться с места.
Активно использовал в шаблонах и для подсветки меню конструкцию SSI следующего вида:
<!--#if expr="$DOCUMENT_URI=/^/папка_1/" -->кусок_кода_1<!--#else -->кусок_кода_2<!--#endif -->
В PHP работает конструкция вида
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ($_SERVER['REQUEST_URI'] == '/папка_1/test.php') {
  3.     echo "кусок_кода_1";
  4. } else {
  5.     echo "ошибка";
  6. }
  7. ?>


Как корректно сделать, чтобы при сравнении 'REQUEST_URI' анализировалась директория, а не имя файла.
2. valenok - 06 Мая, 2007 - 12:17:47 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $uri = $_SERVER["SCRIPT_NAME"];  // $uri = /folder/script.php
  4. $folder = substr( $uri , 0 , strpos($uri, '/' , 1) )."/";
  5. echo $folder;   // Output = /folder/
  6.  


А причём тут SSI? Трабл с elseIf ?
назвать то нужно: Как получить директорию в которой лежит скрипт

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $uri = $_SERVER["SCRIPT_NAME"];  // $uri = /folder/subfolder/subsub/script.php
  4. $folder = substr( $uri , 0 , strpos($uri, '/' , 1) )."/";
  5. echo $folder;   // Output = /folder/
  6.  


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $uri = $_SERVER["SCRIPT_NAME"];  // $uri = /folder/subfolder/subsub/script.php
  4. $folder = substr( $uri , 0 , strrpos($uri, '/' , 1) )."/";
  5. echo $folder;   // Output = /folder/subfolder/subsub/
  6.  


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $uri = $_SERVER["SCRIPT_NAME"];  //  $uri = /folder/subfolder/subsub/script.php
  4. $folders = explode( "/" , $uri);
  5. $folder = "/".$folders[(count($folders)-2)]."/";
  6. echo $folder;   // Output = /subsub/
  7.  



Вместо: $_SERVER["SCRIPT_NAME"]
можно использовать: $_SERVER['REQUEST_URI']
Результат исполнения в обоих случаях тот же.
3. vk - 06 Мая, 2007 - 12:42:48 - перейти к сообщению
Цитата:
[quote=valenok]
А причём тут SSI? Трабл с elseIf ?
назвать то нужно: Как получить директорию в которой лежит скрипт

Мне показалось, я спросил корректно. В SSI есть очень короткая и удобная конструкция, которую я привел. Мне нужно ее заменить на выражение в PHP.
4. valenok - 06 Мая, 2007 - 12:46:03 - перейти к сообщению
В названии темы надо ведь ставить конкретно задачу.
Вряд ли кому ещё понадобится узнать в какой папке лежит скрипт -
пойдут искать по ключевым словам SSI / elseIf

А что значит /^/папка_1/ тоже не думаю что многие знают.
Проверяет находится ли в начале строки строка "папка_1" ?

Можно регулярными выражениями проверять:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. if(preg_match("/^\\/folder_1\\//", $_SERVER["SCRIPT_NAME"])) {
  5.         //code 1
  6. }else{
  7.         // else
  8. }
  9.  

5. vk - 06 Мая, 2007 - 12:50:16 - перейти к сообщению
valenok пишет:
В названии темы надо ведь ставить конкретно задачу.
Вряд ли кому ещё понадобится узнать в какой папке лежит скрипт - пойдут искать по ключевым словам SSI / elseIf

ОК, сорри. жалко, тему не исправить самостоятельно.

 

Powered by ExBB FM 1.0 RC1