1
TheOnly92 2011 年 3 月 27 日
用 preg_replace,#^([0-9]+){3}.*([0-9]+){4}$# replace into $1****$2
应该吧。。。 |
3
TheOnly92 2011 年 3 月 27 日
是正则,代码如下:
preg_replace('#^([0-9]{3}).*([0-9]{4})$#','$1****$2',$value) 刚才正则有点错误,现在修正了。 |
5
TheOnly92 2011 年 3 月 27 日
嗯,刚刚没想到,原来还有比较“笨”的方法:
$value = substr($value,0,3).'****'.substr($value,-4) |
6
icyflash 2011 年 3 月 27 日
先split 再拼凑也行
|
7
fim8 OP @TheOnly92 成功了,非常感谢,得好好学学正则了。
'#^([0-9]{3}).*([0-9]{4})$#','$1****$2' 这句话的大概意思就是,把$value先取前三个数字,再取最后四个数字,其他的用****填充对吧。 就是#^ .* $# 这三个比较不理解。 总之非常感谢! |
9
TheOnly92 2011 年 3 月 27 日
# 是正则中的定界符,^ 和 $ 分别表示句首和句尾,而 .* 则是任何东西。
|
10
TheOnly92 2011 年 3 月 27 日
补充:正则中的定界符可以利用任何符号,除了正则中已经有意义的符号。
|
11
chloerei 2011 年 3 月 27 日
=.= 是我就直接字符串拼接了……
|
13
kayue 2011 年 3 月 27 日
substr is a better way.
|
15
darasion 2011 年 3 月 27 日
保存的时候加星会把这个字段完全变成垃圾数据。
最好还是显示的时候加星吧。 |
16
jeeson 2011 年 3 月 27 日
这种情况下, 正则表达式实在大材小用了
正则表达式要先"编译", 然后再在字符串上"匹配" + "应用", 就这个问题而言, 性能可能会差10倍以上 #5 "最笨"的反而是最好的方法 |
18
vayn 2011 年 3 月 27 日
|
19
yokle 2011 年 5 月 4 日
手机号码 字符规定的。 还不如用分割再拼凑的方面。 简单方便
|
20
kojp 2011 年 5 月 4 日
V2EX 好人真多~~~~~
|
21
predator 2011 年 5 月 4 日
UPDATE table_name SET mobile_field_name = CONCAT(LEFT(mobile_field_name, 3), '****', RIGHT(mobile_field_name, 4));
|