2012-06-02 2 views
4

Как удалить часть строки после последней запятой в PHP?Как удалить часть строки после последней запятой в PHP

Строка: "this is a post, number 1, date 23, month 04, year 2012"
Ожидаемое: "this is a post, number 1, date 23, month 04"

+1

Используйте strrpos (http://php.net/manual/en/function.strrpos.php) для поиска запятой, а затем подстроки. – nhahtdh

ответ

8

substr и strrpos бы полезно

$until = substr($string, 0, strrpos($string.",", ",")); 

Примечание: отредактированные на основе комментариев ниже

+2

** Примечание: ** Этот код не всегда работает, например. если в строке нет запятой. Поскольку последней запятой нет, ничего не нужно удалять, но все удаляется. – hakre

+2

Легко исправить недостающую запятую в конце: \t substr ($ string, 0, strrpos ($ string. ",", ",")); – dfmiller

4

Вы хотите заменить последнюю запятую, а остальные , то есть запятой, за которой следует любой другой символ до en d строки.

Это может быть сформулирован как регулярное выражение, и что шаблон может быть заменен с помощью preg_replace с пустой строкой:

$until = preg_replace('/,[^,]*$/', '', $string); 

Это вариант mario's answer, который работает в случае, если нет запятой в строке как Что ж.

+0

Действительно. Регулярное выражение часто лучше подходит, поскольку оно может одновременно утверждать и изменять строку. – mario

1
$tokens = explode(':', $string);  // split string on : 
array_pop($tokens);     // get rid of last element 
$newString = implode(':', $tokens); // wrap back 

+1

Вам следует добавить объяснение. На данный момент это всего лишь блок кода. –

Смежные вопросы