ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

正则表达式-PHP

2019-11-23 07:32:08  阅读:253  来源: 互联网

标签:preg-match-all preg-match php regex


我正在使用以下PHP代码

<?
    $data = file_get_contents('http://www.kitco.com/texten/texten.html');
    preg_match_all('/([A-Z]{3,5}\s+[0-9]{1,2},[0-9]{4}\s+([0-9.NA]{2,10}\s+){1,7})/si',$data,$result);

    $records = array();
    foreach($result[1] as $date) {
        $temp = preg_split('/\s+/',$date);
        $index = array_shift($temp);
        $index.= array_shift($temp);
        $records[$index] = implode(',',$temp);
    }
    print_R($records);
?>

读取以下数据

  --------------------------------------------------------------------------------
   London Fix          GOLD          SILVER       PLATINUM           PALLADIUM
                   AM       PM                  AM       PM         AM       PM
   --------------------------------------------------------------------------------
   Jun 03,2013   1396.75   1402.50   22.4300   1466.00   1487.00   749.00   755.00  
   May 31,2013   1410.25   1394.50   22.5700   1471.00   1459.00   755.00   744.00  
   --------------------------------------------------------------------------------

我想做的是从下表中读取GOLD(BID&ASK)价格,有人可以帮忙进行正则表达式更改吗?

纽约现货价格
                市场关闭
            将在

----------------------------------------------------------------------
   Metals          Bid        Ask           Change        Low       High 
   ----------------------------------------------------------------------
   Gold         1411.20     1412.20    +22.90  +1.65%    1390.10  1418.00 
   Silver         22.74       22.84     +0.48  +2.13%      22.26    23.08 
   Platinum     1495.00     1501.00    +41.00  +2.82%    1470.00  1511.00 
   Palladium     756.00      761.00     +7.00  +0.93%     750.00   766.00 
   ----------------------------------------------------------------------
   Last Update on Jun 03, 2013 at 17:14.58
   ----------------------------------------------------------------------

解决方法:

在这里,我只匹配数字和句点字符.此代码应返回您要查找的数字.它使用示例中的数据字符串.

<?
preg_match_all('!Gold\s+([0-9.]+)\s+([0-9.]+)!i',$data,$matches);

//New York
$ny_bid = $matches[1][0];
$ny_ask = $matches[2][0];
print("NY\nbid: $ny_bid\n");
print("ask: $ny_ask\n\n");

//Asia
$asia_bid = $matches[1][1];
$asia_ask = $matches[2][1];
print("Asia\nbid: $asia_bid\n");
print("ask: $asia_ask\n");
?>

输出量

NY
bid: 1411.20
ask: 1412.20

Asia
bid: 1406.80
ask: 1407.80

标签:preg-match-all,preg-match,php,regex
来源: https://codeday.me/bug/20191123/2065864.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有