php正则表达式 替换
有一段文本,比如:1254879632,2545698754,1203654787我要提取里面的位数为10位的数字。如下:1、12548796322、2545698754...
有一段文本,比如:1254879632,2545698754,1203654787
我要提取里面的位数为 10位的数字。
如下:
1、1254879632
2、2545698754
3、1203654787
现在我想让中间的四位数字用星号(*)代替
结果如下:
1、12****9632
2、25****8754
3、12****4787
假如字符串变量为 $str 那么这样的正则替换如何写,或者不用正则有更高效的方法也可以。 展开
我要提取里面的位数为 10位的数字。
如下:
1、1254879632
2、2545698754
3、1203654787
现在我想让中间的四位数字用星号(*)代替
结果如下:
1、12****9632
2、25****8754
3、12****4787
假如字符串变量为 $str 那么这样的正则替换如何写,或者不用正则有更高效的方法也可以。 展开
6个回答
展开全部
先正则匹配,然后遍历数组
$v=substr_replace($v,'****',2,4);
$v=substr_replace($v,'****',2,4);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-07-24
展开全部
var $reg=/\d{10}/g;
var $regReplace=/\d{2}\*{4}\d{4}/g;
str_replace($reg,$regReplace,$str)
var $regReplace=/\d{2}\*{4}\d{4}/g;
str_replace($reg,$regReplace,$str)
追问
一个含有十几万个成员(全是10位数)的数组,中间四位数全改成
12****9632
有什么好办法?最好考虑到效率
追答
给你个思路:
你可以先把 这个数据 提取成一组字符串,替换完后在 分割成数组 赋值给原来数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$str=substr($str,0,2)."****".substr($str,5,4);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我已经测试过了,没问题!核心就是正则表达式: (?=\d{2})\d{4}(?=\d{4}$)
希望可以帮到你
<script>
changeStr();
function changeStr()
{
var str = "1254879632";
var reg = /(?=\d{2})\d{4}(?=\d{4}$)/;
var str2 = str.replace(reg,"****");
alert(str+"--"+str2);
}
</script>
希望可以帮到你
<script>
changeStr();
function changeStr()
{
var str = "1254879632";
var reg = /(?=\d{2})\d{4}(?=\d{4}$)/;
var str2 = str.replace(reg,"****");
alert(str+"--"+str2);
}
</script>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.字符串添加了起始位 , 和 最后大于10位的数字 120365478777;
$str = ',1254879632,2545698754,1203654787,120365478777';
2. 提取里面的位数为 10位的数字
$strLen10 = preg_match_all('/,(\d{10})(?!\d+)/',$str,$match);
3.让中间的四位数字用星号(*)代替
foreach ($match[1] as $k => $value){
preg_match('/\d{2}(.*)\d{4}/', $value,$matchMiddle);
var_dump($matchMiddle[1]);
$match[1][$k] = preg_replace("/$matchMiddle[1]/",'****',$value);
}
var_dump($match[1]);
$str = ',1254879632,2545698754,1203654787,120365478777';
2. 提取里面的位数为 10位的数字
$strLen10 = preg_match_all('/,(\d{10})(?!\d+)/',$str,$match);
3.让中间的四位数字用星号(*)代替
foreach ($match[1] as $k => $value){
preg_match('/\d{2}(.*)\d{4}/', $value,$matchMiddle);
var_dump($matchMiddle[1]);
$match[1][$k] = preg_replace("/$matchMiddle[1]/",'****',$value);
}
var_dump($match[1]);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询