2014-12-04 2 views
1

Скажем, у меня есть строка, как это:Удаление все после последней инстанции конкретного характера

$my_string = 'hello_world-my_name_is-holl'; 

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

'hello_world-my_name_is' 

Я хочу, чтобы избавиться от всего после последние экземпляр дефиса. Их может быть больше двух. Моя идея пыталась что-то вроде этого:

  $arr = explode("-", $my_string); 
      $arr = array_pop($arr); 
      $new_name = implode('', $arr); 

Но это не работает. Каков хороший короткий путь к достижению того, что я ищу?

+1

http://php.net/manual/en/function.strrchr.php – sinisake

+0

'$ arr [0];' bingo –

+0

Пожалуйста, прочтите doc.http: //php.net/manual/en/function. array-pop.php Вы должны удалить '$ arr =' во второй строке. Thats it :) – Toumash

ответ

2

Причина, почему ваш код не работает двояко:

прежде всего, array_pop() изменяет переданный массив PLUS возвращает то, что он выталкивается. Это означает, что вы делаете здесь пересоздание «holl» (строка) вашей переменной $arr, и поэтому она больше не является массивом. Вот почему не работает следующая функция implode. Второй аргумент должен быть массивом, а не строкой.

Во-вторых, вы захотите использовать дефис в качестве клея при объединении массива в строку. Итак, следующее должно работать.

$my_string = 'hello_world-my_name_is-holl'; 

$arr = explode("-", $my_string); 
$arr2 = array_pop($arr); 
$new_name = implode('-', $arr); 

echo $new_name; 

Как вы можете видеть, я назначил выскочил-офф «Holl» новой переменной (в случае, если вам это нужно), но затем интегрировалась оригинальный, но измененный массив $arr.

+0

Обе эти вещи я не понял. Я применил это в своем коде, и это работает как шарм. Спасибо! – holl

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