替换字符串中子字符串的所有出现,留下第一个2 - PHP

时间:2013-04-06 22:45:55

标签: php regex preg-replace

$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。但徒劳无功。

我该怎么做....

2 个答案:

答案 0 :(得分:1)

作为通用答案:

  • preg_splitPREG_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;