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