大家好
我怎樣才能獲得數(正NUM),如果字符串語法如下:reqular EXP從字符串從字符串獲得最後的數字
t_def_type_id_2
t_def_type_id_22
t_def_type_id_334
所以,所述第一串中我想要得到1,並且在第二i想要得到22和第三串在我想用preg_match_all或任何其他sutable PHP函數以獲得334
大家好
我怎樣才能獲得數(正NUM),如果字符串語法如下:reqular EXP從字符串從字符串獲得最後的數字
t_def_type_id_2
t_def_type_id_22
t_def_type_id_334
所以,所述第一串中我想要得到1,並且在第二i想要得到22和第三串在我想用preg_match_all或任何其他sutable PHP函數以獲得334
如果字符串中只有一個號碼,只需使用\d+
您可以使用正則表達式
\d+$
與preg_match
試試這個:
preg_match('/^\w+(\d+)$/U', $string, $match);
$value = (int) $match[1];
與[@ian's answer](http://stackoverflow.com/questions/5473865/reqular-exp-to-get-last-number-from-string/5474000 #5474000),這隻會捕獲最後一位數字。 '\ w +'最初會吞噬整個字符串,然後它會一次回退一個位置,直到正則表達式的其餘部分得到滿足。由於'(\ d +)'只有*必需*來匹配一個數字,這就是它得到的。 – 2011-03-29 15:05:55
好點。不公正的匹配應該可以做到。我已經更新了我的答案。 – 2011-03-29 16:09:44
您可以使用preg_replace()
:
$defTypeID = preg_replace("/^(.*?)(\d+)$/", "$2", $defTypeIDString);
$string = "t_def_type_id_2
t_def_type_id_22
t_def_type_id_334";
preg_match_all("#t_def_type_id_([0-9]+)#is", $string, $matches);
$matches = $matches[1];
print_r($matches);
結果:
Array
(
[0] => 2
[1] => 22
[2] => 334
)
如果它總是在你的字符串中的最後一件事,然後使用一個平庸的字符串函數的方法是可能的,看起來有點緊湊:
$num = ltrim(strrchr($string, "_"), "_");
您可以使用
^\w+(\d+)$
,但我沒有測試
將無法工作 - 這將只捕獲最後一位數字。 – 2011-03-29 14:38:36
^\ [^ \ d +] +(\ d +)$ – ian 2011-03-30 05:44:24
這裏是我的替代解決方案。
$number = array_pop(explode('_', $string));
怎麼樣下面的代碼:
^[\ d] +(\ d +)$
這將匹配0個或多個數字。更可能你想\ d + – Cfreak 2011-03-29 14:11:24
固定,謝謝.. – 2011-03-29 14:13:12