preg_match,如何访问单个值

时间:2014-02-20 12:29:29

标签: php preg-match

我有一个字符串

  “美元兑美元汇率在1.35美元处触及2个月以来的最低水平   1.34 usd“

我用两个不同的模式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中插入值,但$ result包含两个值1.35 1.34并且我想访问单个值。 如果有人可以帮助我..

3 个答案:

答案 0 :(得分: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..

答案 1 :(得分: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场比赛

答案 2 :(得分:0)

用爆炸分隔,用“”分隔符。

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