PHP正则表达式删除下划线后的所有内容

时间:2014-03-25 12:22:11

标签: php regex arrays function

我有一个包含两种格式的字符串的数组,它们是..

'number' e.g 55
'number_number' eg 65_12345

我需要生成一个正则表达式来删除下划线以及此后的任何字符,因此65_12345会变成65,有人可以建议一个简单的表达式来执行此操作吗?

4 个答案:

答案 0 :(得分:5)

为什么要使用正则表达式?函数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
)

答案 1 :(得分:5)

将preg_replace用于正则表达式方式

echo  preg_replace('~(\d+)_\d+~',"$1",'65_12345');

使用explode 非正则表达式方式

echo explode('_','65_12345')[0];

答案 2 :(得分:3)

这可以做你想要的,但为什么正则表达式?

#_.*#

快速版:

substr('65_678789', 0, strpos('65_678789', '_'));

答案 3 :(得分:2)

如果正则表达式:

$string = preg_replace("/_.*/", "", $string);

_.*表示用下划线加下划线后的任何内容。