2012-05-06 117 views
6

獲得數我有這個字符串PHP從字符串

@ 123:peterwateber]你好095032sdfsdf! @ [589:ZZZZ]

我想123和589你怎麼認爲使用PHP正則表達式的東西?

注:peterwateber和ZZZZ只是一個例子。任何隨機字符串,應考慮

回答

6

不要忘記先行,所以你不匹配095032

$foo = '@[123:peterwateber] hello there 095032sdfsdf! @[589:zzzz]'; 
preg_match_all("/[0-9]+(?=:)/", $foo, $matches); 
var_dump($matches[0]); // array(2) { [0]=> string(3) "123" [1]=> string(3) "589" } 
+0

這是最好的答案感謝隊友! –

+0

很高興幫助:) – AlienWebguy

2

以下正則表達式將連續提取一個或多個數字字符:

preg_match_all('#\d+#', $subject, $results); 
print_r($results); 
1

有一個preg_match_all

的第一個參數調用函數接受一個正則表達式 - 的以下示例顯示'匹配至少一個數字,後跟任意數字的數字。這將匹配數字。

第二參數是字符串本身,要從其提取

第三是一個數組到其中所有匹配的元素將位於所述受試者。所以,第一個元素將是123,第二次將589等

preg_match_all("/[0-9]+/", $string, $matches); 
+0

嘿..我忘了提在我當「[123:這裏一些文本] @」後我的優先獲取字符串中的數字相匹配發現 –

+0

我很抱歉,我沒有得到這一點。你能更清楚一點嗎?你想打印數字嗎? –

+0

「@ [123:peterwateber]」 preg_match_all應根據。 如果字符串是「你好NIKHIL @ [123:peterwateber]其可能的第六」的輸出應爲「123」時preg_match_all。因此,123應當是得到具有以下值中的字符串中的 「@ [數:字符串]」 –