[英]PHP Regular Expression to remove everything after an underscore
我有一个包含两种格式的字符串的数组,这些是...
'number' e.g 55
'number_number' eg 65_12345
我需要生成一个正则表达式来删除下划线和此后的任何字符,所以65_12345
将变为65
,任何人都可以建议一个简单的表达式来执行此操作吗?
为什么要使用正则表达式? 函数strstr
可以很容易地做到这一点:
$num = '65_12345';
echo strstr($num, '_', true); // 65
要替换一组数字,所有数字都具有相同的格式:
$numArr = ['65_12345','223_43434','5334_23332'];
array_walk($numArr, function(&$v) {
$v = strstr($v, '_', true);
});
print_r($numArr);
输出:
Array
(
[0] => 65
[1] => 223
[2] => 5334
)
使用preg_replace作为正则表达式方式
echo preg_replace('~(\d+)_\d+~',"$1",'65_12345');
使用explode
进行非正则表达式方式
echo explode('_','65_12345')[0];
这可以做你想要的,但为什么正则表达式?
#_.*#
快速版:
substr('65_678789', 0, strpos('65_678789', '_'));
如果正则表达式:
$string = preg_replace("/_.*/", "", $string);
_.*
表示用下划线加下划线后的任何内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.