2016-05-05 26 views
1

最後のハイフンとその後の文字列を削除したいと思います。最後のハイフンの後の文字列を削除します

$str = 'sdfsdf-sdfsdf-abcde'; 
$str = array_shift(explode('-', $str)); 

現在の文字列

$str = 'sdfsdf-sdfsdf-abcde'; 

望ましい結果

$str = 'sdfsdf-sdfsdf'; 
+1

可能な複製(http://stackoverflow.com/questions/10862048/how-to-remove-part-of- - 文字列の後、最後のコンマで-PHP) –

答えて

1

あなたはこのpreg_replace使用することができます:

$repl = preg_replace('/-[^-]*$/', '', $str); 
//=> sdfsdf-sdfsdf 
を見た後、私は最初のハイフンが、最後はしません、何かを発見しました

-[^-]*$は、-と一致し、行末の前に0以上のハイフン以外の文字が続けて続きます。

+1

破/あなたが使用することができますexplode' '付:' $ REPL =破( ' - '、array_slice((爆発 ' - '、$ strの)-2) ); ' – anubhava

0

あなたは最後のインデックスを取得するためにstrrposを使用して、望ましい結果を得るためにsubstrを使用することができます。

$str = 'sdfsdf-sdfsdf-abcde'; 
$pos = strrpos($str , "-"); 
if ($pos !== false) { 
    echo substr($str, 0, $pos); 
} 
0

もうすぐです。ただ、再び一緒にstrignを置く代わりにarray_shift(). array_pop()以降のremoves last element of array. You need, of course, use破() `のarray_pop()を使用しています。

$arr = explode('-', $str); 
array_pop($arr); 
$str = implode('-', $arr); 

これは配列への参照にarray_pop()作品以来、1行でそれを行うにはないことが重要だとそれはそれをmodfies、その後のみ削除要素を返します。他のいくつかの可能な解決策はあります

は、他の回答で言及しています。

+0

ええ、私は間違いをしました。 'array_pop'は削除された要素を返します;-)修正されました。 –

0

これは少しかさばるですが、それはあなたのために動作します:

$str = 'sdfsdf-sdfsdf-abcde'; 
$pieces = explode("-",$str); 
$count = count($pieces); 

for ($x = 0; $x <= $count - 2; $x++) { 
    $desired_result .= $pieces[$x].'-'; 
} 
$desired_result = substr($desired_result, 0, -1); 

echo $desired_result; 

あなたがそれらの多くを持っている場合は、この機能を使用することができます。

ことによって、あなたはそれを呼び出す
function removeLast($str){ 
    $pieces = explode("-",$str); 
    $count = count($pieces); 

    for ($x = 0; $x <= $count - 2; $x++) { 
     $desired_result .= $pieces[$x].'-'; 
    } 
    $desired_result = substr($desired_result, 0, -1); 

    return $desired_result; 
} 

$str = 'sdfsdf-sdfsdf-abcde'; 
$my_result = removeLast($str); 
[PHPの最後のコンマの後の文字列の一部を削除する方法]の
関連する問題