WebjxCom提示:工作中用到的
,觉得这样的显示工作
,还是交给模板类比较合适
。 工作中用到的,觉得这样的显示工作,还是交给模板类比较合适
。所以写了这样的一个插件。
<?php
/**
*Smartyplugin
*@packageSmarty *@subpackageplugins */
/**
*Smartyemail_maskmodifierplugin
*
*Type:modifier<br>
*Name:email_mask<br>
*Purpose:maskpartofemail<br>
*Input:<br>
*-string:inputemail
*-part:maskpart[default'60']unit:percent
*-position:maskposition[default'center'](left,center,right)
*-maskString:maskstring[default'*']
*
*@authorwendaming<wendamingatcomsenzdotcom>
*@paramstring *@paraminteger *@paramstring *@paramstring *@returnstring|void */
functionsmarty_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};
}
}
returnstr_replace(
$emailName.'@',$maskName.'@',$string);
}