我有一个包含许多下划线的字符串,后面跟着单词:" 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;