2016-06-24 5 views
1

このテキストから部分を削除します。 ACCES_ALL_AREAS_1。今のテキストはこのようなもので、ACCES_ALL_AREASのようにしたいと思います。 forループを使ってPHPを使用しました。それはうまくいかなかった。また、単語数は静的ではありません。上記の例のように必ずしも3ではありません。phpの文字列を分割し、最後の要素を使わずに再結合する(爆発)

  • A_PLACE_IN_THE_ABC_3 - >A_PLACE_IN_THE_ABC
  • ACCES_ALL_AREAS_1 - >ACCES_ALL_AREAS
+0

最後のアンダースコアの後には常に数字がありますか? –

+0

@ObjectManipulator、ええ、確かに。最後には常に数字があります –

+0

あなたは何をあきらめましたか? – AbraCadaver

答えて

4

私はおそらくこれを行うだろう:

$string = preg_replace('/_\d+$/', '', $string); 
  • は、文字列
  • の終わり $_と数字を交換してください

    $string = rtrim($string, '_1234567890'); 
    

    または帯::

    $string = rtrim($string, '_0..9'); 
    

    別の方法:

    $parts = explode('_', $string); 
    array_pop($parts); 
    $string = implode('_', $parts); 
    
    • アレイに_に爆発するあなたもこれを行うことが楽しみのために

+0

式を使って[** a regex101.com **](https://regex101.com/r/vM5uR7/1)のデモを表示するだけです。 – Jan

-1

これを試して戻って文字列に_

  • 破列配列のオフ最後の要素をポップ:

    $mystring = "A_PLACE_IN_THE_ABC_3"; 
    $pos = strrpos($mystring, "_"); 
    $result = substr($mystring,0, $pos); // A_PLACE_IN_THE_ABC 
    
  • 0

    はあなたがいないの数を持っている場合は見てみましょう、それが削除されます

    <?php 
    $string = "A_PLACE_IN_THE_ABC_3"; 
    $ex = explode('_', $string); // break array 
    $c = count($ex); // total array 
    $rm = $c - 1; // 1 place to 0 
    unset ($ex[$rm]); // Remove unwanted array 
    $new = join('_', $ex); // regenerate string 
    echo "New String: ". $new; 
    

    別のオプションはSUBSTRです:最後の配列は、それが何、それを試してみます

    $string = "A_PLACE_IN_THE_ABC_3"; 
    echo substr($string, 0, -2); // remove last 2 strings 
    
    関連する問題