2012-09-08 70 views
4

分我有它把文件夹名称的字符串,看起来有点像这样,world:region:bash删除字符串的最后一部分用冒号

,这样我就可以创建FTP功能的路径。

不过,我需要在某个点能够删除字符串的最后一部分,因此,例如

我有这个world:region:bash

我需要得到这个world:region

的脚本无法知道文件夹名称是什么,所以一些它需要能够在最后一个冒号后删除字符串。

+0

'<?php str_replace(':bash',''); ?> –

+0

[爆炸](http://php.net/manual/en/function.explode.php)? –

+0

@RPM“脚本无法知道文件夹名称是什么,所以有些如何才能在最后一个冒号后删除字符串。” –

回答

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

我也许应该强调的是strrpos不strpos发现在给定的字符串

+1

这只会返回字符串到第一个冒号 –

+0

http://php.net/manual/en/function.strrpos.php :) – Martin

+0

我的不好,'strrpos'看起来像'strpos' –

2

一个字符串中最后一次出现爆炸的字符串,删除最后一个元素。 如果您再次需要该字符串,请使用implode。

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

好主意,但是,数组可能会很长,是否有像array_length之类的函数? –

+0

count给出数组长度。但是,您不需要它删除最后一个项目。 – JvdBerg

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

使用它,它给了我ArrayArray:地区 –

+0

@HarryBeasant肯定? [Check this](http://codepad.org/ovqxkB6C) – moonwave99

+0

你可以用'$ tokens = explode(':',$ string,-1)替换前两行;' – salathe

2

你可能想尝试这样的:如果您创建使用此信息的功能

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

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

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

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

demo

注意如何$这意味着字符串结束,由使用的。

0
<?php 
$string = 'world:region:bash'; 
$string = implode(':', explode(':', $string, -1)); 
相关问题