任何人都可以为我解读这个吗? PHP(我认为)

时间:2010-05-28 22:01:35

标签: php regex

此代码用于解析电子邮件,它作为表存储在mySQL数据库中。我相信这是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

谢谢,超级brainiacs!

6 个答案:

答案 0 :(得分:6)

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

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

只是几点说明:

最后的

/si意味着'case insensitve'和'。匹配所有'(意味着。将匹配所有内容,包括\ n(通常不会))

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

编辑:您已更新了自己的问题,例如,Name:(.+)Company:(.+)部分将与Name:Some random set of characters Company: Some more random characters匹配,其中“一些随机字符集”和“更多随机字符”被提取到变量中{ {1}}和$1(因为它们是正则表达式中顺序的第一个和第二个)。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

这似乎是一个肮脏的正则表达式来验证有效的子串“名称”,“公司”等......,(。+)模式允许捕获每个“字段”的值,事实上,在这里,它捕获了这些子串的所有内容。

我认为这是php函数ereg();

的参数

答案 4 :(得分:0)

它是一个通配符。它。表示单个字符,+表示指定字符的组合。例如[a-zA-Z +]表示字符组合的范围从a-z A-Z和[a-z +]。表示a-z之后的一个字符

答案 5 :(得分:0)

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