イントラネットソフトウェアを作成していて、コンピューターが入っている部屋番号と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";
}
コンピュータ名が次のようなものである場合、このステートメントは真である必要があります。
g22-dell-pc23.roundhay.local
f48-lenovo-pc02.roundhay.local
g6-asus-pc18.roundhay.local
ステートメントが上記のとおりでない場合は、部屋とPCアレイをNAおよびその他に戻す必要があります。
部屋番号とPCを正常に抽出できますが、非標準の名前のPCがソフトウェアを使用すると、情報を抽出しようとしますが、続行する情報がないため、ソフトウェアは失敗します。
例えば:
g22-smartboard.roundhay.local
ソフトウェアは、正規表現と一致していなくても、PC番号を取得しようとします。ただし、コンピューター名JOSH-PCのテスト用PCでは、デフォルトの情報にフォールバックします。
私は正規表現をテストしましたが、名前がGまたはFで始まる場合は常に正しいようです。
これらの要件に特に一致する必要があります。
- 最初の文字はGまたはFです
- 次に、0〜9の1桁または2桁
- 次に-
- 次に、任意の量の文字az
- 次に-
- 次に、文字PC
- 次に、0〜9の1桁または2桁
- その後、何でも
私はこれを機能させるためにあらゆる種類の試みをしましたが、正規表現を正しく理解していません。私はそれを調べましたが、それはすべてあまりにも混乱しています。