我有一個包含有兩種格式,這些都是一些字符串數組..PHP正則表達式清除一切
'number' e.g 55
'number_number' eg 65_12345
我需要生成一個正則表達式來刪除下劃線和任何在此之後的字符,所以65_12345
將成爲65
,任何人都可以建議一個簡單的表達式來做到這一點?
我有一個包含有兩種格式,這些都是一些字符串數組..PHP正則表達式清除一切
'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];
如果正則表達式:
$string = preg_replace("/_.*/", "", $string);
_.*
意味着下劃線下劃線後的內容。
這可以做你想做的,但爲什麼正則表達式?
#_.*#
快速版本:
substr('65_678789', 0, strpos('65_678789', '_'));
好點的..我心裏只是在想正則表達式出於某種原因 – Zabs
@Zabs,呀它能夠更好地避免這樣的小規模行動:) –
一些偉大的正則表達式來自所有人的答覆謝謝:)我已經使用了您的答案的輕微變化,因此已接受您的答案。 – Zabs