如何删除字符串中第一个特定字符之前的所有内容?

时间:2011-03-16 18:19:22

标签: php string replace

我的变量看起来像这样:

AAAAAAA,BB CCCCCCCC

AAAA,BBBBBB CCCCCC

我想删除“,”之前的所有内容,

所以结果应该是这样的:

BB CCCCCCCC

BBBBBB CCCCCC

我已经解决了这个问题,以便在“,”后删除所有内容:

list($xxx) = explode(',', $yyyyy);

不幸的是,我不知道如何让它在“,”之前删除所有内容。

6 个答案:

答案 0 :(得分:25)

由于这是一个简单的字符串操作,您可以使用以下内容删除第一个逗号之前的所有字符:

$string = preg_replace('/^[^,]*,\s*/', '', $input);

preg_replace()允许您根据正则表达式替换字符串的一部分。我们来看看正则表达式。

  
      
  • / is the start delimiter      
        
    • ^ is the "start of string" anchor
    •   
    • [^,] every character that isn't a comma (^ negates the class here)      
          
      • * repeated zero or more times
      •   
    •   
    • , regular comma
    •   
    • \s any whitespace character      
          
      • * repeated zero or more times
      •   
    •   
  •   
  • / end delimiter
  •   

答案 1 :(得分:20)

我不建议使用explode,因为如果有多个逗号会导致更多问题。

// removes everything before the first ,
$new_str = substr($str, ($pos = strpos($str, ',')) !== false ? $pos + 1 : 0);

编辑:

if(($pos = strpos($str, ',')) !== false)
{
   $new_str = substr($str, $pos + 1);
}
else
{
   $new_str = get_last_word($str);
}

答案 2 :(得分:2)

list(,$xxx) = explode(',', $yyyyy, 2);

答案 3 :(得分:2)

尝试这个它得到最后的东西,如果没有,它将存在它将从最后一个空格检查,我把它包装在一个功能,使它变得容易:

<?php 
$value='AAAA BBBBBB CCCCCC';
function checkstr($value){
    if(strpos($value,',')==FALSE){
        return trim(substr(strrchr($value, ' '), 1 ));  
    }else{
        return trim(substr($value, strpos($value,',')),',');
    }
}

echo checkstr($value);
?>

答案 4 :(得分:1)

你可以这样做:

$arr = explode(',', $yyyyy);
unset($arr[0]);
echo implode($arr);

答案 5 :(得分:0)

正则表达式通常很昂贵,我不推荐像这样简单的东西。 使用explode并将其限制为2可能会导致与使用str_pos相同的执行时间,但是你不必做任何其他事情来生成所需的字符串,因为它存储在第二个索引中。

 //simple answer 
 $str = explode(',', $yyyyy,2)[1]; 

OR

//better 

$arr = explode(',', $yyyyy,2);
$str = isset($arr[1]) ? $arr[1] : '';