smarty模板中替换变量问题,将身份证号码中间几位用星号表示
<{$dignityArray.sid|regex_replace:"/^[1-9](\d{16}|\d{13})[0-9xX]$/":"??????"}>备注:$dig...
<{$dignityArray.sid|regex_replace:"/^[1-9](\d{16}|\d{13})[0-9xX]$/":" ??????"}>
备注:$dignityArray.sid表示身份证号码,问号那里怎么表示呢??
最后要的效果如:600200*****0265
请问怎么实现?、谢谢 展开
备注:$dignityArray.sid表示身份证号码,问号那里怎么表示呢??
最后要的效果如:600200*****0265
请问怎么实现?、谢谢 展开
3个回答
展开全部
我不是大神 搬砖的自己写的~~ 如果有错请见谅
按照楼主的要求正则改动了下在php里写的
$pattern = "/^([1-9])(\d{9}|\d{6})(?:\d{4})(\d{3})([0-9xX])$/";
$replacement = "\$1\$2****\$3\$4";
print preg_replace($pattern, $replacement, $string);可以实现你的效果
在smarty 中
<{$dignityArray.sid||regex_replace:"/^([1-9])(\d{9}|\d{6})(?:\d{4})(\d{3})([0-9xX])$/":"\$1\$2****\$3\$4"}>
但在smarty中我试了下怎么也不好用 经过反复baidu还是没找到 最后一个偶然的机会经过一位大师的点拨 终于找到原因“{”smarty不识别 但是楼主好像比较幸运 <{好像你的模板可以识别
<{$dignityArray.sid|regex_replace:"/^([1-9])(\d{ldelim}9{rdelim}|\d{ldelim}6{rdelim})(?:\d{ldelim}4{rdelim})(\d{ldelim}3{rdelim})([0-9xX])$/":"\$1\$2****\$3\$4"}>
个人感觉还是在php中调整的好 找到你的数组或字段 array_merge()覆盖就可以
那个正则有点长 估计可以完善
按照楼主的要求正则改动了下在php里写的
$pattern = "/^([1-9])(\d{9}|\d{6})(?:\d{4})(\d{3})([0-9xX])$/";
$replacement = "\$1\$2****\$3\$4";
print preg_replace($pattern, $replacement, $string);可以实现你的效果
在smarty 中
<{$dignityArray.sid||regex_replace:"/^([1-9])(\d{9}|\d{6})(?:\d{4})(\d{3})([0-9xX])$/":"\$1\$2****\$3\$4"}>
但在smarty中我试了下怎么也不好用 经过反复baidu还是没找到 最后一个偶然的机会经过一位大师的点拨 终于找到原因“{”smarty不识别 但是楼主好像比较幸运 <{好像你的模板可以识别
<{$dignityArray.sid|regex_replace:"/^([1-9])(\d{ldelim}9{rdelim}|\d{ldelim}6{rdelim})(?:\d{ldelim}4{rdelim})(\d{ldelim}3{rdelim})([0-9xX])$/":"\$1\$2****\$3\$4"}>
个人感觉还是在php中调整的好 找到你的数组或字段 array_merge()覆盖就可以
那个正则有点长 估计可以完善
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询