php 字符替换问题,请大神指教

我想替换@字符的前面3个字符串和后面3个字符串,以达到保护邮箱的目的,例如:
[email protected]
替换后效果是:
test***@***t.com
弄了一天了,百度翻了个遍也没找到相应该的效果,自己也把php字符串函数研究了两天但还是没有效果,特来此求求大神帮忙。

$str="[email protected]";
echo substr($str,0,strpos($str,"@")-3)."***@***".substr($str,strpos($str,"@")+4);

追问

谢谢,再请教下如何替换三个字的姓名中间为*但不会显示乱码呢

追答

看你字符集了。

如果是utf8(一个汉字是三个字节)

$str = "李寻欢";
echo substr($str,0,3)."*".substr($str,6);
同理,gbk是两个字节
....

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-24

用正则表达式进行替换即可

<?php

$Email   = 
'[email protected]'
;

$NewMail = preg_replace('/(\w){3}\@(\w){3}/i', 
'***@***'
, $Email);

echo $NewMail;

效果:

寻_常 的回答似乎也可以,只是好像没有我这个简洁易懂

你可以多测试几个,如有问题,欢迎追问

相似回答