11

我有一个看起来有点像这样的字符串,world:region:bash

它划分文件夹名称,因此我可以为 FTP 功能创建路径。

但是,我需要在某些时候能够删除字符串的最后一部分,例如

我有这个world:region:bash

我需要得到这个world:region

该脚本将无法知道文件夹名称是什么,因此它需要如何删除最后一个冒号后的字符串。

4

6 回答 6

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

我可能应该强调 strrpos 而不是 strpos 在给定字符串中找到最后一次出现的子字符串

于 2012-09-08T21:29:05.553 回答
6
$tokens = explode(':', $string);      // split string on :
array_pop($tokens);                   // get rid of last element
$newString = implode(':', $tokens);   // wrap back
于 2012-09-08T21:31:43.650 回答
3

您可能想尝试这样的事情:

<?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, ":");
?>
于 2012-09-08T21:33:24.053 回答
2

分解字符串,并删除最后一个元素。如果您再次需要该字符串,请使用 implode。

$items = array_pop(explode(':', $the_path));
$shotpath = implode(':', $items);
于 2012-09-08T21:29:32.567 回答
1

使用正则表达式/:[^:]+$/preg_replace

$s = "world:region:bash";
$p = "/:[^:]+$/";
$r = '';

echo preg_replace($p, $r, $s);

演示

请注意如何$使用这意味着字符串终止。

于 2012-09-08T21:34:22.103 回答
-1
<?php
$string = 'world:region:bash';
$string = implode(':', explode(':', $string, -1));
于 2016-04-20T13:38:50.570 回答