
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)); |