Удаление последней части строки, деленной на двоеточие

У меня есть строка, которая выглядит немного так world:region:bash

Он делит имена папок, поэтому я могу создать путь для функций FTP.

Тем не менее, мне нужно в некоторых точках, чтобы удалить последнюю часть строки, так, например,

У меня есть этот world:region:bash

Мне нужно получить этот world:region

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

 $res=substr($input,0,strrpos($input,':')); 

Я должен, вероятно, выделить, что strrpos not strpos находит последнее вхождение подстроки в заданной строке

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

Разверните строку и удалите последний элемент. Если вам нужна строка снова, используйте implode.

 $items = array_pop(explode(':', $the_path)); $shotpath = implode(':', $items); 

Вы можете попробовать что-то вроде этого:

 <?php $variable = "world:region:bash"; $colpos = strrpos($variable, ":"); $result = substr($variable, 0, $colpos); echo $result; ?> 

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

 <?php function StrRemoveLastPart($string, $delimiter) { $lastdelpos = strrpos($string, $delimiter); $result = substr($string, 0, $lastdelpos); return $result; } $variable = "world:region:bash"; $result = StrRemoveLastPart($variable, ":"); ?> 

Используйте регулярное выражение /:[^:]+$/ , preg_replace

 $s = "world:region:bash"; $p = "/:[^:]+$/"; $r = ''; echo preg_replace($p, $r, $s); 

демонстрация

Обратите внимание, как используется $ означающее прерывание строки.

 <?php $string = 'world:region:bash'; $string = implode(':', explode(':', $string, -1));