Удалить все перед первым «,» в строке

Мои переменные выглядят так:

AAAAAAA, BB CCCCCCCC

AAAA, BBBBBB CCCCCC

Я хотел бы удалить все до ","

Результаты должны выглядеть так:

BB CCCCCCCC

BBBBBB CCCCCC

Я разработал это, чтобы удалить все ПОСЛЕ ",":

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

к сожалению, я не знаю, как заставить его работать, чтобы удалить все, прежде чем ","

Благодаря!

Я бы не рекомендовал использовать 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); } 

Поскольку это простая манипуляция с строками, вы можете использовать следующее, чтобы удалить все символы перед первой запятой:

 $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

попробуйте это, он получит последний материал после того, как, если нет, он будет проверяться с последнего места, я завернул его в функцию, чтобы упростить ее:

 <?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); ?> 

ты можешь сделать:

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

Regex обычно дорогой, и я бы не рекомендовал его для чего-то такого простого. Использование взрыва и ограничение его на 2, вероятно, приведет к тому же времени выполнения, что и при использовании str_pos, но вам не нужно было ничего делать, чтобы генерировать требуемую строку, поскольку она хранится во втором индексе.

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

ИЛИ

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