正则表达式-PHP
我正在使用下面的PHP代码正则表达式-PHP,php,regex,preg-match,preg-match-all,Php,Regex,Preg Match,Preg Match All,我正在使用下面的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 $d
<?
$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);
?>
我想做的是阅读下表中的黄金(买入和卖出)价格,有人能帮我修改正则表达式吗
纽约现货价格
市场关闭了
将在
----------------------------------------------------------------------
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
----------------------------------------------------------------------
我不确定您是否可以修改现有的正则表达式以轻松匹配这两个表,但如果您有字符串中的第二个表,则可以使用:
$string = "PLAIN TEXT TABLE DATA HERE";
preg_match('/Gold\s+(\d+\.\d{2})\s+(\d+\.\d{2})/',$string,$matches);
$goldBid = $matches[1];
$goldAsk = $matches[2];
这里我只匹配数字和句点字符。此代码应返回您要查找的号码。它使用示例中的数据字符串
<?
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");
?>
你也可以使用
如果你能想出第一个表达式,那么第二个表达式应该不会带来任何问题。表数据是纯文本还是HTML?这将与构造正则表达式有所不同。我试图更改代码,但它没有显示任何记录它的空白?请在OP处检查,它可能使用了原始的$variable
名称,而不是$string
。我在我的服务器上进行了测试,这个方法也可以。OP:你是想用HTML读取数据还是纯文本?
<?
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
<?php
pattern('Gold\s+([0-9.]+)\s+([0-9.]+)', 'i')->match($data)->forEach(function ($m) {
print 'bid: ' . $m->group(1);
print 'ask: ' . $m->group(2);
});