2010-05-28 57 views
0

这段代码被用来分析邮件,它被作为一个表格存储在一个mySQL数据库中。我相信这是PHP代码。 (.+)是做什么的?任何人都可以为我解密这个吗? PHP(我认为)

/A new order has been successfully placed through(.+)Name:(.+)Company:(.+)Email:(.+)Address 1(.+)Order ID:(.+)Date:(.+)Payment Type:(.+)Order Status:(\s*)Accepted(.*)\n(.+)\$([\d\.]+)\s+X/si 

谢谢,超级脑科医生!

+0

看起来像一个正则表达式。 (。+)至少匹配任何一个字符一次。我会等待别人发表正确的答案。 – Blorgbeard 2010-05-28 22:03:48

+0

自从我看过最后一部约翰·休斯的电影以来,还没有听过这个术语。 – gtd 2010-05-28 22:21:31

回答

6

看起来像正则表达式匹配。 (.+)部分是'通配符'捕获。

这可以针对字符串运行,并且可以提取必要的信息。在大多数情况下,这个字符串与语言无关

就在几个注意事项:

/si在最后手段“的情况下钝感”和”。匹配所有”(手段。将匹配一切,包括\ n(它通常不))

的捕获((.+))可以在一般的正则表达式启用的语言为$#匹配(其中#是顺序(.+)后引用出现在正则表达式的字符串

编辑:您已成功更新问题,以便作为一个例子,该部分Name:(.+)Company:(.+)将匹配Name:Some random set of characters Company: Some more random characters其中,“一些随机的字符集”和“一些更随机字符”被提取到变量$1$2(因为它们是你的正则表达式中的第一个和第二个)

2

这是一个正则表达式模式。相关的PHP文档从这里开始:PCRE (Perl-Compatible Regular Expression) Introduction

每个.+是“任何字符,一次或多次”的占位符。它周围的圆括号使得该占位符匹配的任何内容都被“捕获”,以便稍后使用它(在您的情况下,将其存储到数据库中)。

1

这是一个正则表达式,(.+)意味着匹配任何字符一次或多次。请参阅here以获取便利参考,here可用于测试您的正则表达式的工具。

1

这似乎是一个肮脏的正则表达式来验证有效的子字符串的名称,公司等等,(。+)模式允许捕获每个'领域'的价值,实际上,它在这里捕捉这些子字符串的所有内容。

我认为这是PHP函数ereg()的一个参数;

0

其通配符。它。表示单个字符,+表示指定字符的组合。像[a-zA-Z +]意味着从a-z A-Z到[a-z +]的字符组合。表示a-z之后的一个字符

+0

我想你是指'[a-zA-Z] +'和'[a-z] +'。 – 2010-05-29 01:58:08

+0

是的,它会是([a-zA-Z] +) – Rahul 2016-06-17 08:38:11

0

(。+)是用PCRE(正则表达式)写的通配符。

相关问题