使用preg_match PHP从文本文件中获取值

时间:2014-09-03 06:26:14

标签: php regex preg-match

我有一个以下格式的文本文件。

Wed Aug 27 20:24:53.536 IST

      address         ref clock     st  when  poll reach  delay  offset    disp
*~172.16.18.163    .GPS.             1   657  1024  377   13.99   1.801  19.630
 ~127.127.1.1      .LOCL.            3    15    64  377    0.00   0.000   1.920
 * sys_peer, # selected, + candidate, - outlayer, x falseticker, ~ configured

文件已动态生成我需要获取“.GPS”旁边的“st”(1)值的值。 。文字'.GPS。'在每个文件中都是一样的。

检查以下代码:

$f1_content = file_get_contents('filename.txt');
if(preg_match("/\b(.*)\s(.*)\s[0-9]\s\b/i", $f1_content, $match))
{
                print_r($match); die();
}

没有得到任何匹配。知道如何做到这一点吗?

2 个答案:

答案 0 :(得分:1)

你可以这样说:

@\.GPS\.\s+\K(\d+)@is

PHP:

preg_match("@\.GPS\.\s+\K(\d+)@is", $f1_content, $match)

如果您出现的情况多于此类,则应使用preg_match_all

Live demo

答案 1 :(得分:0)

(?=.*?\.GPS\.).*?GPS\.\s*(\d+)

试试这个。这很有效。

参见演示。

http://regex101.com/r/pP3pN1/12