1

PHP を使用して、さまざまな開発 URL に基づいて、さまざまなモードのデバッグを強制しようとしています。私は現在、この設定をしています:

$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']), 'https') === FALSE ? 'http' : 'https';
$host = $_SERVER['HTTP_HOST'];
$req_uri = $_SERVER['REQUEST_URI'];
$currentUrl = $protocol . '://' . $host . $req_uri;

$hostArray = array("localhost", "host.integration", "10.105.0"); //Don't use minification on these urls


for ($i = 0; $i < count($hostArray); $i++) {
    if (strpos($currentUrl, $hostArray[$i])) {
        $useMin = false;
    }
}

ただし、このメソッドを使用すると、ホスト配列内の文字列のいずれかをパラメーターとして渡す場合、$useMin = false 条件をトリガーできます。次に例を示します。

http://domain.com?localhost

URL がその条件で始まる (または url パラメーターの ? の後のどこにも含まれていない) 場合を除き、$useMin = false を防止するものを作成するにはどうすればよいですか?

4

2 に答える 2

2

$currentUrlをチェックするときに を使用しないでください。自体が にある$hostArrayかどうかを確認するだけです。$host$hostArray

完全一致を確認する場合は、次のようにします。

if(in_array($host, $hostArray)) {
    $useMin = false;
}

$hostArrayまたは、これを実行して、内のどこかにアイテムが存在するかどうかを確認したいかもしれません$host:

foreach($hostArray AS $checkHost) {
    if(strstr($host, $checkHost)) {
        $useMin = false;
    }
}

の項目で$host 始まる場合にのみ一致を見つけたい場合は、次のようにし$hostArrayます。

foreach($hostArray AS $checkHost) {
    if(strpos($host, $checkHost) === 0) {
        $useMin = false;
    }
}
于 2013-08-16T20:26:07.260 に答える
1

コメントできないので、ここに投稿します。ホスト配列を URL で確認するのはなぜですか。次のように、ホストで直接確認しないのはなぜですか。

if (strpos($host, $hostArray[$i])) {
于 2013-08-16T20:29:45.507 に答える