PHP String函数用于长条数据

时间:2012-03-08 20:03:26

标签: php

我需要从以下字符串中获取数据,并且需要根据其类型

放置它们的值

1) 响应:成功消息:邮箱消息计数邮箱:6000 UrgMessages:0 NewMessages:5 OldMessages:12

必填输出:示例OLD = 12 NEW = 5 URGENT = 0

2)  名称:6000   秘密:   MD5秘密:   上下文:DLPN_Admin   语言 :   AMA标志:未知   转移模式:打开   MaxCallBR:384 kbps   CallingPres:允许演示,未屏蔽   通话限制:2147483647   呼叫组:1   皮卡组:1   Callerid:" Arham Ali" < 6000>   ACL:没有   Sess-Timers:接受   Sess-Refresh:uas   Sess-Expires:1800秒   Sess-Min-SE:90秒   编解码器顺序:(ulaw:20,gsm:20)   自动构图:否

必需输出:CallerId =" Arham Ali"名称=" 6000"

我非常坚持这个愚蠢的事情,请在PHP域帮助我。

2 个答案:

答案 0 :(得分:1)

RegEx最好猜测


PHP

$string = 'Response: Success Message: Mailbox Message Count Mailbox: 6000 UrgMessages: 0 NewMessages: 5 OldMessages: 12'; 
preg_match('/Response: Success Message: Mailbox Message Count Mailbox: (\d+) UrgMessages: (\d+) NewMessages: (\d+) OldMessages: (\d+)/',$matches);
print 'OLD=' . $matches[4] . ' NEW=' . $matches[3] . ' URGENT=' . $matches[2];

PHP

$string = 'Name : 6000 Secret : MD5Secret : Context : DLPN_Admin Language : AMA flags : Unknown Transfer mode: open MaxCallBR : 384 kbps CallingPres : Presentation Allowed, Not Screened Call limit : 2147483647 Callgroup : 1 Pickupgroup : 1 Callerid : "Arham Ali" <6000> ACL : No Sess-Timers : Accept Sess-Refresh : uas Sess-Expires : 1800 secs Sess-Min-SE : 90 secs Codec Order : (ulaw:20,gsm:20) Auto-Framing: No';
preg_match('/^.*Name\s?:\s?(.*?)\s.*Callerid\s?:\s?"(.*?)".*$/i', $string, $matches);
print 'CallerId="' . $matches[2] . '" Name= "' . $matches[1] . '"';

答案 1 :(得分:1)

如果你需要更多的东西,消息字符串并不总是相同的,你可以这样做

$string = ' Response: Success Message: Mailbox Message Count Mailbox: 6000 UrgMessages: 0 NewMessages: 5 OldMessages: 12';


preg_match('/OldMessages: (\d+)*/', $string, $oldMessages);
preg_match('/NewMessages: (\d+)*/', $string, $newMessages);
preg_match('/UrgMessages: (\d+)*/', $string, $urgent);
preg_match('/Mailbox: (\d+)*/', $string, $currentMailboxCount);

print 'OLD= '.$oldMessages[1].' NEW='.$newMessages[1].' URGENT='.$urgent[1];

这都是使用正则表达式。 preg_match

同样的方法适用于问题的后半部分。

使用正则表达式的好工具是http://gskinner.com/RegExr/

这可以帮助你!