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

时间:2013-05-28 23:11:04

标签: php regex

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

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

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

但我想用正则表达式一次性完成这项工作,我该如何实现?

3 个答案:

答案 0 :(得分:10)

匹配的正则表达式将是:

/_[^_]*$/

只需将其替换为'':

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

答案 1 :(得分:5)

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

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

strrpos - 查找字符串中子字符串 last 出现的位置

答案 2 :(得分:2)

您也可以使用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;