繁体   English   中英

PHP Preg_match正则表达式结果

[英]PHP Preg_match Regular Expression Results

这是我的RE,我将其与preg_match_all PHP一起使用,但是得到的结果不准确http://screencast.com/t/FPsoJkAT

#(\d+/\d+/\d+)|(\d+:\d+(AM|PM).*?[$]\d)#i

我收到多余的行(空行+ PM和AM),应该跳过

当我尝试使用RE Utility进行测试时,这是预期的结果。 http://screencast.com/t/RRteFlCD

有人请帮助我对该RE进行排序,以使该实用程序生成的正确结果与正确顺序相匹配。

RE不能正常工作

 preg_match_all("#(\d+/\d+/\d+)|(\d+:\d+(AM|PM).*?[$]\d)#i",$response,$result);

输入项

13年11月1日$ 4.34 10:02 PM Internet 79kbs $ 0.02 06:42 PM Internet34kbs $ 0.01 05:37 PM0438377989Optus SMS1 $ 0.000 05:21 PM Internet253kbs $ 0.06 03:59 PM0438377989Optus SMS1 $ 0.000 03:59 PM0438377989Optus SMS1 $ 0.000 03:59 PM0438377989Optus SMS1 $ 0.000 03:57 $ 0.10 12:34 PM Internet1659kbs $ 0.37 11:26 AM Internet54kbs $ 0.01 11:20 AM0411000321DIV-VoiceMail00:00:19 $ 0.00 11:20 AM Internet76kbs $ 0.02 11:19 AM0438377989Optus SMS1 $ 0.000 11:19 AM0438377989Optus SMS1 $ 0.000 10:02 AM0414828271sOptus SMS1 $ 0.000 10:02 AM0414828271s 03:15 $ 3.59 08:40 AM0411000321DIV-VoiceMail00:00:25 $ 0.00 08:39 AM Internet388kbs $ 0.09第1页,共3页打印用法详细信息16/01/2013 https://www.optus.com.au/portal/site/customercentre / template .BINARYPORTLET / m ...(由于处理时间的缘故,最近的通话或接收数据的使用情况可能不会出现在上面的使用情况交易详细信息页面中。某些类型的包含值或通知也可能不会显示 是的。 如果您更改费率计划或在整个账单周期中生效的附加组件,则在下一个账单周期开始之前,您的使用摘要将不准确。 显示的金额包括:电话,后付费移动和移动宽带服务专用的GST。 含GST的预付费移动服务。 13年10月1日$ 22.94 10:00 PM Internet239kbs $ 0.05 10:00 PM Internet46kbs $ 0.01 08:56 PM0417973105Optus SMS1 $ 0.000 08:51 PM0417973105Optus SMS1 $ 0.000 08:51 PM0417973105Optus SMS1 $ 0.000 08:45 PMPM041797s105Optus SMS1 $ 0.000 $ 0.03 06:00 PM0738483389Brisbane00:15:18 $ 13.41 04:22 PM0438377989Optus SMS1 $ 0.000 04:22 PM0438377989Optus SMS1 $ 0.000 02:20 PM Apps Usage Mobile152kbs $ 0.03 02:14 PM Internet154kbs $ 0.03 02:14 PM0282700700Sydney00:03:V:0:24$04124ice :55PM Internet958kbs $ 0.21 01:54 PM0282700517Sydney00:01:04 $ 1.95 01:53 PM0411000321VoiceMail00:00:32 $ 0.82 12:50 PM0411000321DIV-VoiceMail00:00:03 $ 0.00 12:18 PM0295521298Sydney00:00:07 $ 1.14 10:04 AM0411000321DIV 07AM Internet76kbs $ 0.02第2页,共3页打印用法详细信息2013年1月16日https://www.optus.com.au/portal/site/customercentre /template.BINARYPORTLET/m ...使用余额可能不考虑上限 取消/折扣或调整。 对于Postpaid,如果您拥有7000多个记录,则显示的未开票使用率将是近似值。 请参阅发票以了解实际费用。 第3页,共3页打印用法详细信息2013年1月16日https://www.optus.com.au/portal/site/customercentre /template.BINARYPORTLET/m ...

谢谢

preg_match_all()的结果数组是一个二维数组。 $result[0]是整个RE的所有匹配项的数组。 其余的$result[i]是每个匹配项中第i个捕获组的数组。

因此,出于您的目的,您关心的只是$result[0] 我对此进行了测试,它包含47个元素。

另外,您可能应该将RE中的所有组更改为非捕获组,以避免首先生成所有这些无关紧要的字符串。 所以每个(...)应该是(?:...)

print_r($result[0])打印:

Array
(
    [0] => 11/01/13
    [1] => 10:02PM Internet79kbs $0
    [2] => 06:42PM Internet34kbs $0
    [3] => 05:37PM0438377989Optus SMS1 $0
    [4] => 05:21PM Internet253kbs $0
    [5] => 03:59PM0438377989Optus SMS1 $0
    [6] => 03:59PM0438377989Optus SMS1 $0
    [7] => 03:59PM0438377989Optus SMS1 $0
    [8] => 03:57PM0438377989Optus SMS1 $0
    [9] => 12:40PM Internet462kbs $0
    [10] => 12:34PM Internet1659kbs $0
    [11] => 11:26AM Internet54kbs $0
    [12] => 11:20AM0411000321DIV-VoiceMail00:00:19 $0
    [13] => 11:20AM Internet76kbs $0
    [14] => 11:19AM0438377989Optus SMS1 $0
    [15] => 11:19AM0438377989Optus SMS1 $0
    [16] => 10:02AM0414828271Optus SMS1 $0
    [17] => 09:32AM Internet297kbs $0
    [18] => 08:46AM0282700517Sydney00:03:15 $3
    [19] => 08:40AM0411000321DIV-VoiceMail00:00:25 $0
    [20] => 08:39AM Internet388kbs $0
    [21] => 16/01/2013
    [22] => 10/01/13
    [23] => 10:00PM Internet239kbs $0
    [24] => 10:00PM Internet46kbs $0
    [25] => 08:56PM0417973105Optus SMS1 $0
    [26] => 08:56PM0417973105Optus SMS1 $0
    [27] => 08:51PM0417973105Optus SMS1 $0
    [28] => 08:51PM0417973105Optus SMS1 $0
    [29] => 08:45PM0417973105Optus SMS1 $0
    [30] => 06:15PM Internet23kbs $0
    [31] => 06:00PM Internet156kbs $0
    [32] => 06:00PM0738483389Brisbane00:15:18 $1
    [33] => 04:22PM0438377989Optus SMS1 $0
    [34] => 04:22PM0438377989Optus SMS1 $0
    [35] => 02:20PM Apps Usage Mobile152kbs $0
    [36] => 02:14PM Internet154kbs $0
    [37] => 02:14PM0282700517Sydney00:05:49 $5
    [38] => 02:03PM0411000321DIV-VoiceMail00:00:24 $0
    [39] => 01:55PM Internet958kbs $0
    [40] => 01:54PM0282700517Sydney00:01:04 $1
    [41] => 01:53PM0411000321VoiceMail00:00:32 $0
    [42] => 12:50PM0411000321DIV-VoiceMail00:00:03 $0
    [43] => 12:18PM0295521298Sydney00:00:07 $1
    [44] => 10:04AM0411000321DIV-VoiceMail00:00:26 $0
    [45] => 08:07AM Internet76kbs $0
    [46] => 16/01/2013
    [47] => 16/01/2013
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM