当前位置: 首页 > 图文教程 > 网络编程 > PHP > 屏蔽部分Email地址的smarty插件

PHP
PHP实例:用PHP简单实现多条件查询
PHP实例:用PHP实现多文件上载系统程序
PHP实例程序:用PHP制作登录页面程序
PHP实例:PHP取GB2312编码字符串首字母的方法
PHP实例:用PHP实现表单验证码登陆校验
Oracle与PHP实例开发Myers订单跟踪系统
PHP实例:email address 生成图片程序
PHP连接远程MYSQL和MYSQL5.1中文乱码处理方法
用 PHP 构建自定义搜索引擎
详细讲解PHP的Jmai组件及发送邮件实例
在动态网页技术PHP5中类(CLASS)的新特征
实例学习PHP如何实现在线发邮件
PHP上传文件的代码
不需要GD库的情况下实现验证码
PHP进阶教程:实现网站的无限分类
童虎:人人皆可做插件 Discuz! 插件开发实例讲解
创建论坛专业知识库 HDWiki(For Discuz!)V1.0正式版发布
PHP网站后门的隐藏技巧测试报告
加速PHP动态网站 MySQL索引分析和优化
php中rename()函数的妙用

PHP 中的 屏蔽部分Email地址的smarty插件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 32 ::
收藏到网摘: n/a

工作中用到的,觉得这样的显示工作,还是交给模板类比较合适。所以写了这样的一个插件。
 
<?php
/**
 * Smarty plugin
 * @package Smarty
 * @subpackage plugins
 */
/**
 * Smarty email_mask modifier plugin
 *
 * Type:     modifier<br>
 * Name:     email_mask<br>
 * Purpose:  mask part of email<br>
 * Input:<br>
 *         - string: input email
 *         - part: mask part [default '60'] unit: percent
 *         - position: mask position [default 'center'] (left, center, right)
 *         - maskString: mask string [default '*']
 *
 * @author  wendaming <wendaming at comsenz dot com>
 * @param string
 * @param integer
 * @param string
 * @param string
 * @return string|void
 */
function smarty_modifier_email_mask($string, $maskPart = 60, $position = 'center', $maskString = '*') {
    $emailName = substr($string, 0, strpos($string, '@'));
    $emailLen = strlen($emailName);
    $maskNum = floor($emailLen * $maskPart / 100);
    $maskName = '';
    if ($position == 'center') {
        $beginMask = floor(($emailLen - $maskNum) / 2);
    } elseif ($position == 'left') {
        $beginMask = 0;
    } else {
        $beginMask = $emailLen - $maskNum;
    }
    $count = 0;
    for ($i = 0; $i < $emailLen; ++ $i) {
        if ($i >= $beginMask && $count < $maskNum) {
            $maskName .= $maskString;
            ++ $count;
        } else {
            $maskName .= $emailName{$i};
        }
    }
    return str_replace($emailName . '@', $maskName . '@', $string);
}