2013-11-03 101 views
2

我有一個PHP應用程序,它應該需要一個特殊的激活密鑰來解鎖。 所以我想創建腳本來檢查$user_input是否格式正確。PHP檢查字符串格式是否正確

的激活鍵將是這樣的:
1E63-DE12-22F3-1FEB-8E1D-D31F

數字和字母間距可以變化。
所以激活密鑰也可以是這樣的或不同的:
1EE3-1E1C-R21D-1FD7-111D-D3Q5

  1. 冒號與分離 -
  2. 每個結腸包含4個字符它們是字母的混合和數字

在此先感謝您的幫助:)

+1

我會使用正則表達式來檢查此問題:http://stackoverflow.com/questions/2428343/regex-for-product-key – younes0

+3

爲什麼你需要檢查代碼是否格式良好,因爲如果他們不匹配的東西,格式或合作德,它不會工作。但是,我建議,如果您希望用戶輸入這種格式,請將6個文本框放入最大長度爲4的文本框中,然後在接收輸入時將它們連接爲'-' –

+0

這僅用於格式檢查,輸入後進一步檢查。無論如何,你的建議/想法非常好,所以我可以使用它。謝謝。 – xZero

回答

6

你必須使用正則表達式。我測試過此正則表達式的位置:http://www.phpliveregex.com/

<?php 

$key = '1E63-DE12-22F3-1FEB-8E1D-D31F'; 
$regex = '^[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}$'; 

if (preg_match($regex, $key)) { 
    echo 'Passed'; 
} else { 
    echo 'Wrong key'; 
} 
+0

修改後可以很好地工作。沒有修改它會拋出錯誤「警告:preg_match():沒有結尾分隔符'^'找到」所以我修改它到這個 $ regex ='/^[A-Z0-9] {4} - [A-Z0- 9] {4} - [A-Z0-9] {4} - [A-Z0-9] {4} - [A-Z0-9] {4} - [A-Z0-9] {4} $ /'; 謝謝,您的腳本完全符合我的要求。 – xZero

2

此正則表達式會匹配您發佈的一個鍵,也將工作,如果包含小寫字母:

^([A-z0-9]){4}-([A-z0-9]){4}-([A-z0-9]){4}-([A-z0-9]){4}-([A-z0-9]){4}-([A-z0-9]){4}$ 

如果只想大寫字母,將該正則表達式中的所有「z」更改爲「Z」

相關問題