2014-03-25 119 views
3

我有一個包含有兩種格式,這些都是一些字符串數組..PHP正則表達式清除一切

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

我需要生成一個正則表達式來刪除下劃線和任何在此之後的字符,所以65_12345將成爲65,任何人都可以建議一個簡單的表達式來做到這一點?

回答

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

好點的..我心裏只是在想正則表達式出於某種原因 – Zabs

+1

@Zabs,呀它能夠更好地避免這樣的小規模行動:) –

+1

一些偉大的正則表達式來自所有人的答覆謝謝:)我已經使用了您的答案的輕微變化,因此已接受您的答案。 – Zabs

5

使用preg_replace 正則表達式方式

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

使用explode非正則表達式方式

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

如果正則表達式:

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

_.*意味着下劃線下劃線後的內容。

3

這可以做你想做的,但爲什麼正則表達式?

#_.*# 

快速版本:

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