$regex = '([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})';
$string = 'I am emailing to john@gmail.com and hoe@gmail.com but harris@live.com';
$newString = preg_replace($regex,'',$string);
我想用空字符串替换所有电子邮件地址,留下前两个。
所以$ newString应该是
I am emailing to john@gmail.com and hoe@gmail.com but
。但徒劳无功。
我该怎么做....
答案 0 :(得分:1)
作为通用答案:
将preg_split
与PREG_SPLIT_DELIM_CAPTURE
一起使用。
在结果数组中,从[4]
之后开始删除索引不均匀的每个数组项。
然后使用implode()
连接余数。
答案 1 :(得分:-1)
您可以尝试使用爆炸
$str = I am emailing to john@gmail.com and hoe@gmail.com but harris@live.com;
$str_array = explode( , $str);
$counter = 0;
$str_out = ;
foreach($str_array as $cast){
$findme = @;
$pos = strpos($cast, $findme);
if ($pos === false) {
$str_out = $str_out . $cast . ;
}else{
$counter++;
if($counter<=2){
$str_out = $str_out . $cast . ;
}
}
}
echo $str_out;