用于长条形数据的PHP字符串函数


PHP String functions for long strip of data

我需要从以下字符串中提取数据,并需要根据它们的类型放置它们的值

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

所需输出:示例OLD=12 NEW=5 URGENT=0

2)名称:6000秘密:MD5Secret:上下文:DLPN_Admin语言:AMA标志:未知传输模式:打开最大呼叫BR:384 kbpsCallingPres:允许演示,不屏蔽通话限额:2147483647呼叫组:1选择升级组:1来电:"Arham Ali"<6000>ACL:否Sess计时器:接受Sess刷新:uasSess过期时间:1800秒Sess最小SE:90秒编码顺序:(ulaw:20,gsm:20)自动成帧:无

所需输出:CallerId="Arham Ali"Name="6000"

我被这个愚蠢的事情困扰了这么长时间,请在PHP领域帮助我。

如果您需要更多信息,以防消息字符串不总是相同,您可以执行此

$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];

这都是使用regex。预匹配

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

使用regex的一个好工具是http://gskinner.com/RegExr/

Hoep这帮了你一把!

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] . '"';