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
请问怎么实现?、谢谢
展开
 我来答
earth桃
2014-01-14
知道答主
回答量:5
采纳率:0%
帮助的人:5.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()覆盖就可以
那个正则有点长 估计可以完善
njumwx
2014-01-13 · TA获得超过327个赞
知道小有建树答主
回答量:868
采纳率:0%
帮助的人:437万
展开全部
未必要正则,strlen $id{....} = * 也可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小叶顾10
2014-01-13 · TA获得超过256个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:110万
展开全部
先用PHP替换好了再抛到模版上!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式