修剪删除字符串末尾的额外字符


trim removing an extra character at end of string

我有以下字符串:

$string="British Airways BAGvpWdLarbvapDA0xYf9B71KVh1ySPSzGycWyiRtYJJ";

以及我用作字符串中的分隔符$del_sub_two="KVh1ySPSzGycWyiRtYJJ";

当我运行: $string=trim($string,$del_sub_two);结果是:

British Airways BAGvpWdLarbvapDA0xYf9B7

但它应该是:

British Airways BAGvpWdLarbvapDA0xYf9B71

我需要它从任何特定字符串的末尾删除$del_sub_two字符串,为什么要删除字符串末尾的额外字符?

好的,阅读您对其他答案的评论,您希望在任何其他字符串末尾KVh1ySPSzGycWyiRtYJJ删除字符串。使用正则表达式。

$string="British Airways BAGvpWdLarbvapDA0xYf9B71KVh1ySPSzGycWyiRtYJJ";
$string = preg_replace('/KVh1ySPSzGycWyiRtYJJ$/', '', $string);
trim()不会

删除特定字符串,它会删除您在从目标字符串的开头和结尾传入的第二个参数中指定的字符串中的任何项目。 由于您传入了一个字符串,其值1在第二个参数中,因此1的所有实例都将从要修剪的字符串的开头和结尾删除。

例如,如果将大写B添加到 trim 函数的第二个参数,它将从 British Airways 中删除B

例:

$string="British Airways BAGvpWdLarbvapDA0xYf9B71KVh1ySPSzGycWyiRtYJJ";
$del_sub_two="KVh1ySPSzGycWyiRtYJJ";
$string=trim($string, 'BKVh1ySPSzGycWyiRtYJJ');
// Echos "ritish Airways BAGvpWdLarbvapDA0xYf9B7"
echo $string;

替代解决方案:

$string="British Airways BAGvpWdLarbvapDA0xYf9B71KVh1ySPSzGycWyiRtYJJ";
$del_sub_two="KVh1ySPSzGycWyiRtYJJ";
$pos = strpos($string, $del_sub_two);
if($pos === FALSE) {
   echo "not found";
} else {
  // will output: British Airways BAGvpWdLarbvapDA0xYf9B71
  echo substr($string, 0, $pos);
}