2010-05-28 85 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(正則表達式)寫的通配符。

相關問題