2012-04-28 60 views
0

我基本上有一個PHP數組中包含一個字符串,我基本上需要過濾字符串以獲得一個9位數的ID號碼(它被括號括起來),我確定有可能是一種使用正則表達式來做到這一點的方法,但我很無能。從字符串中提取9位數字

我知道,正則表達式返回其結果是可能有多個結果的數組,但我知道,不會有每串多個結果,因此我需要把結果直接到我現有的,如果可能的數組

例如:

function getTasks(){ 
    //filter string before inserting into array 
    $str['task'] = "meeting mike (298124190)"; 

    return $str; 
} 

回答

2

使用preg_replace你只是有一個線路濾波器....

$str['task'] = preg_replace('/.*\((\d{9})\).*/', '$1', "meeting mike (298124190)"); 

使用preg_match

$strings = array("meeting mike (298124190)", "meeting mike (298124190)", "meeting mike (298124190)"); 
foreach ($strings as $string) { 
    if (preg_match("|\(([\d]{9})\)|", $string, $matches)) { 
     $str[] = $matches[1]; 
     // OR $str['task'][] = $matches[1]; 
    } 
} 
print_r($str); 
+0

我只是想提取...我想從一個字符串中提取一個9位數的數字。無論如何,我會給這個嘗試 – 2012-04-28 18:08:47

+0

這幾乎可以工作,除了你沒有考慮到可能有其他數字,身份證號碼是唯一的數字包圍括號 – 2012-04-28 18:12:13

+0

@ mk_89:看到更新 – 2012-04-28 18:19:16

1
<?php 
    $str = "meeting mike (298124190)"; 
    preg_match("/([0-9]{9})/s", $str, $result); 

    print_r($result); // $result is an array with the extracted numbers 
?> 
1

那麼,假設它是唯一一個(9位數由括號包圍)以下將做:

preg_match("|\(([0-9]{9})\)|", $str['task'], $matches); 
return $matches[1]; //Will contain your ID. 
1

其財產以後像:

$str = "meeting mike (298124190)"; 
$pattern = '/[0-9]{9}/'; 
if (preg_match($pattern, $str, $matches)) 
{ 

    echo $matches[0]; 
}