在PHP中拆分字符串并再次组合它们没有最后一个元素(爆炸)

时间:2016-06-24 16:40:55

标签: php arrays regex string text

我想从此文中删除该部分。 ACCES_ALL_AREAS_1。现在文本是这样的,我想让它像ACCES_ALL_AREAS。我使用PHP爆炸与for循环。那没用。字数也不是静态的。并不总是如上例所示。

  • A_PLACE_IN_THE_ABC_3 - > A_PLACE_IN_THE_ABC
  • ACCES_ALL_AREAS_1 - > ACCES_ALL_AREAS

3 个答案:

答案 0 :(得分:4)

我可能会这样做:

$string = preg_replace('/_\d+$/', '', $string);
  • _替换为字符串
  • 的结尾$处的数字

为了好玩,你也可以这样做:

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

或使用范围:

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

另一种方式:

$parts  = explode('_', $string);
array_pop($parts);
$string = implode('_', $parts);
  • _上爆炸到数组
  • 弹出数组的最后一个元素
  • _上的数组内爆回字符串

答案 1 :(得分: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

答案 2 :(得分:-1)

试试这个:

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