Chinaunix首页 | 论坛 | 博客
  • 博客访问: 275035
  • 博文数量: 59
  • 博客积分: 1368
  • 博客等级: 中尉
  • 技术积分: 1071
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-02 06:06
文章分类

全部博文(59)

文章存档

2012年(59)

我的朋友

分类: 系统运维

2012-02-22 20:40:22

在windows中运行ionize的FileManager插件,会提示缺少fnmatch()函数的定义,我们可以在/application/libraries/FileManager/Tooling.php文件的顶部加上fnmatch()在windows平台的实现代码:
  1. <?php

  2. if (!function_exists('fnmatch')) {
  3.     define('FNM_PATHNAME', 1);
  4.     define('FNM_NOESCAPE', 2);
  5.     define('FNM_PERIOD', 4);
  6.     define('FNM_CASEFOLD', 16);
  7.     
  8.     function fnmatch($pattern, $string, $flags = 0) {
  9.         return pcre_fnmatch($pattern, $string, $flags);
  10.     }
  11. }

  12. function pcre_fnmatch($pattern, $string, $flags = 0) {
  13.     $modifiers = null;
  14.     $transforms = array(
  15.         '\*' => '.*',
  16.         '\?' => '.',
  17.         '\[\!' => '[^',
  18.         '\[' => '[',
  19.         '\]' => ']',
  20.         '\.' => '\.',
  21.         '\\' => '\\\\'
  22.     );
  23.     
  24.     // Forward slash in string must be in pattern:
  25.     if ($flags & FNM_PATHNAME) {
  26.         $transforms['\*'] = '[^/]*';
  27.     }
  28.     
  29.     // Back slash should not be escaped:
  30.     if ($flags & FNM_NOESCAPE) {
  31.         unset($transforms['\\']);
  32.     }
  33.     
  34.     // Perform case insensitive match:
  35.     if ($flags & FNM_CASEFOLD) {
  36.         $modifiers .= 'i';
  37.     }
  38.     
  39.     // Period at start must be the same as pattern:
  40.     if ($flags & FNM_PERIOD) {
  41.         if (strpos($string, '.') === 0 && strpos($pattern, '.') !== 0) return false;
  42.     }
  43.     
  44.     $pattern = '#^'
  45.         . strtr(preg_quote($pattern, '#'), $transforms)
  46.         . '$#'
  47.         . $modifiers;
  48.     
  49.     return (boolean)preg_match($pattern, $string);
  50. }

阅读(1163) | 评论(0) | 转发(0) |
0

上一篇:Ionize0.9.7 Bug 解决

下一篇:Web开发备忘

给主人留下些什么吧!~~