PHP正则表达式-从文本块的一行获取主机名
我在PHP中有一个变量,它包含一个大文本(确切地说是一个电子邮件头) 我想从这个标题中得到两样东西。下面是一个示例标题:PHP正则表达式-从文本块的一行获取主机名,php,regex,grep,Php,Regex,Grep,我在PHP中有一个变量,它包含一个大文本(确切地说是一个电子邮件头) 我想从这个标题中得到两样东西。下面是一个示例标题: 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-Templa
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
现在,从本文中,我想得到两个变量。
一个包含hs34940.somedomain.tld,另一个包含数字的最后4位,在本例中为4940。数字的长度是可变的
我现在在变量$header中得到了这个,我想从中得到$number和$name
非常感谢您的帮助。这里有一个简单的方法,使用正则表达式一行:
Subject: This is some text before hs34940.somedomain.tld
第一个匹配中的另一个:hs34940.somedomain.tld
对于数字,如果位数是固定的,只需使用substr
有用的API:
-将模式与文本匹配
-获取字符串的特定部分
主题标题:
preg_match('/Subject:[a-zA-Z0-9.]*/',$header,$headline)代码>
对于域:preg_match('/[a-z0-9]*[.][a-z0-9]*[.][a-z]*/',$headline[0],$domain)代码>
这不太一般,但对于你的情况来说,效果很好。我不是正则表达式专家,但这可能会有所帮助
preg_match('/\d{4}\.somedomain.tld.*|\.somedomain1.tld.*/', $header, $arr);
$arr[0]将为您提供4940.somedomain.tld
我试过了
然后您可以使用substr或explode获取数字,域名是somedomain.tld
将保持不变或将发生变化?somedomain.tld可以是两个不同的值。它可以是或some1.tld或domain2.tld。这是我一直试图做的,但我似乎不知道如何将任何有效内容放入其中:/what似乎有问题?正则表达式不匹配?我想是的。。。它返回一个“有效数组”,但该数组为空。您能否在上面添加一个关于如何获取hs34940.somedomain.tld的示例?谢谢