我有一个字符串
“美元兑美元汇率在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并且我想访问单个值。 如果有人可以帮助我..
答案 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];