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

Und*_*e2k 4 php regex

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

我知道我可以做一个If语句,检查某些结局,比如

if(strstr($key,'chkbox')) {
    $string= rtrim($key, '_chkbox');
}
Run Code Online (Sandbox Code Playgroud)

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

lur*_*ker 10

匹配的正则表达式将是:

/_[^_]*$/
Run Code Online (Sandbox Code Playgroud)

只需用''代替:

preg_replace( '/_[^_]*$/', '', your_string );
Run Code Online (Sandbox Code Playgroud)


Eug*_*eck 5

没有必要使用极其昂贵的正则表达式,一个简单的strrpos()就可以完成这项工作:

$string=substr($key,0,strrpos($key,"_"));
Run Code Online (Sandbox Code Playgroud)

strrpos - 查找字符串中最后一次出现的子字符串的位置