2014-02-20 49 views
0

我有一個字符串的preg_match,如何訪問單個值

「美元在1.35美元交易,觸及2個月最低水平,在 1.34美元」

我有兩個提取不同模式的preg_match十進制數1.35,1.34和2

$pattern = '/.\d+(?:\.\d{2})?((?<=[0-9])(?= usd))/'; 
$patterndate = '/.\d+(?:\.\d{2})?((?<=[0-9])(?= months))/'; 

preg_match_all($pattern, $str, $new); 
preg_match_all($patterndate, $str, $res); 

foreach($new[0] as $k => $v) { 
    $result = $v; 
} 

foreach($res[0] as $k => $v) { 
    $date = $v; 
} 

我想插入型動物列MySQL的價值,但在$結果包含兩個價值1.35 1.34,我想訪問單個值。 如果有人可以幫助我..

回答

0

$result僅包含一個值:這是匹配的(1.34),因爲你在循環的每次迭代覆蓋$result的最後一個值。

如果你想存儲所有的值,你應該$result數組:

$result = array(); 
foreach($new[0] as $k => $v) { 
    $result[] = $v; 
} 
print_r($result); // it's an array that contains 1.35 and 1.34 

然後放入DB這樣的:

INSERT INTO ... (col1, col2) VALUES ($result[0], $result[1]) 

但要確保你確實拿到2場比賽

0
$string = "Dollar to trade at 1.35 usd, touched the weakest level in 2 months at 1.34 usd" ; 

$pattern_float = '/\s[0-9]+.[0-9]+\s/' ; 
$pattern_interger = '/\s[0-9]+\s/' ; 

$matches = array() ; 
preg_match_all($pattern_float , $string , $matches) ; 

var_dump("FLOAT" , $matches[0]) ; 

$matches = array() ; 
preg_match_all($pattern_interger , $string , $matches) ; 
var_dump("INTEGER" , $matches[0]) ; 

//use trim to clean data.. 
0

分解與爆炸,與「」deliminater。

$seperate = explode(" ",$result); 
echo $seperate[0]; 
echo $seperate[1];