1

イントラネットソフトウェアを作成していて、コンピューターが入っている部屋番号と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桁
  • その後、何でも

私はこれを機能させるためにあらゆる種類の試みをしましたが、正規表現を正しく理解していません。私はそれを調べましたが、それはすべてあまりにも混乱しています。

4

2 に答える 2

1

正規表現:

/[g|f]\d{1,2}-[a-z]+-pc\d{1,2}.+/i

動作するはずです。http://gskinner.com/RegExr/を使用して式を作成します。

于 2013-03-05T19:41:07.590 に答える
1

この正規表現を試してください[G|F]\d{1,2}-[a-z]+-pc\d{1,2}.+

また、正規表現の優れたリソースはhttp://gskinner.com/RegExr/です。

于 2013-03-05T19:41:09.483 に答える