如何删除字符串中下划线的最后一次出现


how to remove last occurance of underscore in string

我有一个包含许多下划线的字符串,后面跟着单词:" Field_4_txtbox "我需要在字符串中找到最后一个下划线,并删除它后面的所有内容(包括"_"),所以它会返回给我" Field_4 ",但我需要这个工作不同长度的结束字符串。所以我不能只修剪固定长度。

我知道我可以用If语句来检查某些结尾,比如

if(strstr($key,'chkbox')) {
    $string= rtrim($key, '_chkbox');
}

但是我想用正则表达式模式一次性做到这一点,我怎么能做到这一点?

匹配的正则表达式为:

/_[^_]*$/

用":

"代替
preg_replace( '/_[^_]*$/', '', your_string );

不需要使用非常昂贵的正则表达式,一个简单的 strrpos() 就可以完成工作:

$string=substr($key,0,strrpos($key,"_"));

strrpos -查找子字符串在字符串

最后出现的位置

您也可以直接使用explode():

$string = 'Field_4_txtbox';
$temp = explode('_', strrev($string), 2);
$string = strrev($temp[1]);
echo $string;

PHP 5.4+

$string = 'Field_4_txtbox';
$string = strrev(explode('_', strrev($string), 2)[1]);
echo $string;