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

Форум PHP

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

 

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

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

тема: glob($var,GLOB_ONLYDIR) Имеется ли аналог этой функции?
 
 автор: Stanisov   (21.12.2008 в 22:47)   письмо автору
 
 

Помогите пожалуйста решить проблему! На хосте отключена функция <b>glob()</b>, существует ли ее аналог или хотя бы кто знает пользовательскую функцию

  Ответить  
 
 автор: Trianon   (21.12.2008 в 23:05)   письмо автору
 
   для: Stanisov   (21.12.2008 в 22:47)
 

Отключена? Может там просто версия php старая?
glob не делает ничего , чего нельзя было бы достичь посредством opendir / readdir / closedir

  Ответить  
 
 автор: Loki   (23.12.2008 в 13:13)   письмо автору
 
   для: Stanisov   (21.12.2008 в 22:47)
 


<?php
if(!(function_exists('glob')))
{function 
glob($pattern)
 {
#get pathname (everything up until the last / or \)
  
$path=$output=null;
  if(
PHP_OS=='WIN32')
   
$slash='\\';
  else
   
$slash='/';
  
$lastpos=strrpos($pattern,$slash);
  if(!(
$lastpos===false))
  {
$path=substr($pattern,0,-$lastpos-1); #negative length means take from the right
   
$pattern=substr($pattern,$lastpos);
  }
  else
  {
#no dir info, use current dir
   
$path=getcwd();
  }
  
$handle=@ opendir($path);
  if(
$handle===false)
   return 
false;
  while(
$dir=readdir($handle))
  {if(
pattern_match($pattern,$dir))
    
$output[]=$dir;
  }
  
closedir($handle);
  if(
is_array($output))
   return 
$output;
  return 
false;
 }

 function 
pattern_match($pattern,$string)
 {
#basically prepare a regular expression
  
$out=null;
  
$chunks=explode(';',$pattern);
  foreach(
$chunks as $pattern)
  {
$escape=array('$','^','.','{','}',
                 
'(',')','[',']','|');
   while(
strpos($pattern,'**')!==false)
    
$pattern=str_replace('**','*',$pattern);
   foreach(
$escape as $probe)
    
$pattern=str_replace($probe,"\\$probe",$pattern);
   
$pattern=str_replace('?*','*',
             
str_replace('*?','*',
              
str_replace('*',".*",
               
str_replace('?','.{1,1}',$pattern))));
   
$out[]=$pattern;
  }
  if(
count($out)==1)
   return(
eregi("^$out[0]$",$string));
  else
   foreach(
$out as $tester)
    if(
eregi("^$tester$",$string))
     return 
true;
   return 
false;
 }
}
?>

  Ответить  
 
 автор: Trianon   (23.12.2008 в 14:06)   письмо автору
 
   для: Loki   (23.12.2008 в 13:13)
 

   $pattern=str_replace('?*','*',
             str_replace('*?','*',
              str_replace('*',".*",
               str_replace('?','.{1,1}',$pattern))));

тут явно порядок нарушен.

  Ответить  
 
 автор: Stanisov   (24.12.2008 в 20:50)   письмо автору
 
   для: Loki   (23.12.2008 в 13:13)
 

Loki, А эта функция аналогична функции glob() с модификаторов GLOB_ONLYDIR или для других модификаторов?

  Ответить  
 
 автор: BinLaden   (25.12.2008 в 07:32)   письмо автору
 
   для: Stanisov   (24.12.2008 в 20:50)
 

Нет

  Ответить  
 
 автор: Stanisov   (27.12.2008 в 09:47)   письмо автору
 
   для: BinLaden   (25.12.2008 в 07:32)
 

А для какого модификатора она? Мне нужно для GLOB_ONLYDIR

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

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