我創造了一些內聯網的軟件,並確定哪個房間號和PC號電腦是我使用的REMOTE_HOST服務器陣列。問題一個字符串匹配正則表達式
這裏是我的代碼:
$hostname = $_SERVER['REMOTE_HOST'];
//Check to see if the computer name is compatible with room auto-detect
if (preg_match("/G|F\d{1,2}-.*?-PC\d{1,2}.*?/i", $hostname)) {
$room = explode("-", $hostname);
$pc = explode(".", $room[2]);
} else {
$pc[0] = "NA";
$room[0] = "other";
}
這statment必須是真實的,如果計算機名稱的類似:
g22-dell-pc23.roundhay.local
f48-lenovo-pc02.roundhay.local
g6-asus-pc18.roundhay.local
如果語句並不像上述那麼它需要恢復的房間和PC陣列娜等。
我可以提取房間號和PC成功,但是當使用非標準名稱的PC使用的軟件,它仍然會嘗試提取信息,並因爲它沒有信息去軟件失敗。
例如:
G22-smartboard.roundhay.local
該軟件仍試圖獲得PC數量,即使它dosent符合我的正則表達式。但是我的測試PC與計算機名稱JOSH的PC上,它並回落到默認信息。
我過我的正則表達式,它似乎只要名稱以無論是G或F.一個
開始我需要它來專門滿足這些要求是真實的:
- 第一個字母爲G或F
- 然後無論是從0的一個或兩個數字 - 9
- 然後, -
- 接着的字母az 任何量
- 接着一個 -
- 然後字母PC
- 然後無論是從0一個或兩個數字 - 9
- 然後什麼
我已經嘗試了各種不同的人得到這個工作,但我只是不不理解正則表達式。我已經看過它,但它太混亂了。
慣於在'()'創建捕獲?並添加到他的數組? – Cjueden 2013-03-05 19:42:19
@Cjueden當然。 * facepalms – 2013-03-05 19:45:10
@Cjueden編輯。過了一段時間,因爲我已經使用RegExp這個複雜的。大學的工作真的讓你忘記了事情。 :P – 2013-03-05 19:47:21