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