Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除被冒号分隔的字符串的最后一部分_Php_String - Fatal编程技术网

Php 删除被冒号分隔的字符串的最后一部分

Php 删除被冒号分隔的字符串的最后一部分,php,string,Php,String,我有一个字符串,看起来有点像这样,world:region:bash 它划分文件夹名称,因此我可以为FTP函数创建路径 但是,我需要在某些时候能够删除字符串的最后一部分,例如 我有这个world:region:bash 我需要得到这个world:region 脚本无法知道文件夹的名称,因此需要了解如何删除最后一个冒号后的字符串 $res=substr($input,0,strrpos($input,':')); 我可能应该强调,strrpos而不是strpos查找给定字符串中最后出现的子字符串

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

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

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

我有这个
world:region:bash

我需要得到这个
world:region

脚本无法知道文件夹的名称,因此需要了解如何删除最后一个冒号后的字符串

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

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

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

$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, ":");
?>

使用正则表达式


请注意如何使用表示字符串终止的
$

?@RPM“脚本无法知道文件夹名称,因此需要知道如何在最后一个冒号后删除字符串。”这听起来像是reg-ex可以解决这个问题,“看看右边的相关列-有很多指向你想要的内容的指针。这只会将字符串返回到第一个冒号my bad,
strrpos
看起来像
strpos
IMHO应该存在对strpos的检查,以防字符串中没有冒号,否则,由于substr需要int而不是boolean,因此引发错误。无论如何,只需放置一个cast
$res=substr($input,0,(int)strrpos($input,:')好主意,但是,数组可能很长,是否有类似array_length之类的函数?count给出数组长度。但是,您不需要它来删除最后一项。使用它,它将为我提供Arrayworld:Region您可以使用
$tokens=explode(“:”,$string,-1)替换前两行
<?php
$string = 'world:region:bash';
$string = implode(':', explode(':', $string, -1));
$s = "world:region:bash";
$p = "/:[^:]+$/";
$r = '';

echo preg_replace($p, $r, $s);
<?php
$string = 'world:region:bash';
$string = implode(':', explode(':', $string, -1));