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