用来解析.htgroup文件的PHP类


Posted in PHP onSeptember 05, 2012

.htgroup 文件示例:
admin: user2
editor: user1 user3
writer: user3

class Htgroup { 
private $file = ''; 
private function write($groups = array()) { 
$str = ''; 
foreach ($groups as $group => $users) { 
$users_str = ''; 
foreach ($users as $user) { 
if (!empty($users_str)) { 
$users_str .= ' '; 
} 
$users_str .= $user; 
} 
$str .= "$group: $users_str\n"; 
} 
file_put_contents($this -> file, $str); 
} 
private function read() { 
$groups = array(); 
$groups_str = file($this -> file, FILE_IGNORE_NEW_LINES); 
foreach ($groups_str as $group_str) { 
if (!empty($group_str)) { 
$group_str_array = explode(': ', $group_str); 
if (count($group_str_array) == 2) { 
$users_array = explode(' ', $group_str_array[1]); 
$groups[$group_str_array[0]] = $users_array; 
} 
} 
} 
return $groups; 
} 
public function __construct($file) { 
if (file_exists($file)) { 
$this -> file = $file; 
} else { 
die($file." doesn't exist."); 
return false; 
} 
} 
public function addUserToGroup($username = '', $group = '') { 
if (!empty($username) && !empty($group)) { 
$all = $this -> read(); 
if (isset($all[$group])) { 
if (!in_array($username, $all[$group])) { 
$all[$group][] = $username; 
} 
} else { 
$all[$group][] = $username; 
} 
$this -> write($all); 
} else { 
return false; 
} 
} 
public function deleteUserFromGroup($username = '', $group = '') { 
$all = $this -> read(); 
if (array_key_exists($group, $all)) { 
$user_index = array_search($username, $all[$group]); 
if ($user_index !== false) { 
unset($all[$group][$user_index]); 
if (count($all[$group]) == 0) { 
unset($all[$group]); 
} 
$this -> write($all); 
} 
} else { 
return false; 
} 
} 
}

$groupHandler = new Htgroup('/home/myuser/.htgroup'); 
// Add user 'user1' to group 'admin' in .htgroup. Group will be automatically created if it doesn't exist. 
$groupHandler -> addUserToGroup('user1', 'admin'); 
// Delete user 'user1' from group 'admin' in .htgroup. Group will be automatically removed if it doesn't contain any users. 
$groupHandler -> deleteUserFromGroup('user1', 'admin');
PHP 相关文章推荐
PHP中的正规表达式(二)
Oct 09 PHP
php 小乘法表实现代码
Jul 16 PHP
解析thinkphp import 文件内容变量失效的问题
Jun 20 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
php精度计算的问题解析
Jun 21 PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 PHP
PHP如何通过date() 函数格式化显示时间
Nov 13 PHP
TP5多入口设置实例讲解
Dec 15 PHP
PHP curl 并发最佳实践代码分享
Sep 05 #PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 #PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 #PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 #PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 #PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 #PHP
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 #PHP
You might like
PHP学习 变量使用总结
2011/03/24 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python 错误和异常小结
2013/10/09 Python
python检测lvs real server状态
2014/01/22 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
Python同步遍历多个列表的示例
2019/02/19 Python
Python中print和return的作用及区别解析
2019/05/05 Python
python 字典访问的三种方法小结
2019/12/05 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
创业计划书六个要素
2013/12/26 职场文书
社区工作者感言
2014/03/02 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
企业承诺书格式范文
2015/04/28 职场文书
学生犯错保证书
2015/05/09 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技