我在PHP中有一个变量,它包含一个大文本(确切地说是一个电子邮件标题)。
我想从这个标题中获取2件事。这是一个示例标题:
Received: by mozg.ha.domain.net (Postfix, from userid 0)
id E714C9AEDE; Tue, 29 Mar 2011 10:22:42 +0200 (CEST)
Subject: This is some text before hs34940.somedomain.tld
X-internal-Template: mozg/de/shipping.model
现在,从这篇文章中,我想获得2个变量。 一个包含 hs34940.somedomain.tld ,另一个包含数字的最后4位数字,在本例中为 4940 。数字的长度是可变的。
我目前在变量$ header中有这个,我很想从中得到$ number和$ name。
非常感谢任何帮助。
答案 0 :(得分:0)
这里有一个简单的方法,使用正则表达式来获取这一行:
Subject: This is some text before hs34940.somedomain.tld
获得第一场比赛的另一场比赛:hs34940.somedomain.tld
如果数字的位数是固定的,那么只需使用一个substr。
有用的API:
Preg_match($pattern,$match,$result) - 将模式与文字进行匹配。
substr($start_indes,$finish_index,$string) - 获取字符串的特定部分。
对于主题标题:preg_match('/Subject: [a-zA-Z0-9. ]*/', $header, $headline);
对于域:preg_match('/[a-z0-9]*[.][a-z0-9]*[.][a-z]*/', $headline[0],$domain);
这不太通用,但对于你的情况会很好。
答案 1 :(得分:0)
我不是正则表达式的专家,但这可能有所帮助。
preg_match('/\d{4}\.somedomain.tld.*|\.somedomain1.tld.*/', $header, $arr);
$ arr [0]会给你4940.somedomain.tld
我尝试了this tool
然后你可以使用substr或explode来获取号码和域名