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 中插入值,但$result包含两个值 1.35 1.34,我想访问单个值。如果有人能帮助我..

$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

然后像这样放入数据库:

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

但请确保您确实获得了 2 场比赛

$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..

爆炸分隔,用" "deliminater分隔。

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

最新更新