2012-05-06 32 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应当是得到具有以下值中的字符串中的 “@ [数:字符串]” –