2016-09-04 11 views
1

次のコードは、URLパス/sard/にいるときにうまく機能します。 www.example.com/sard/まだ私のURLがwww.example.com/sard/page2に行くなら、それは壊れます。SERVER ['REQUEST_URIフルダイナミックパス?

<?php 
$twitter = ''; 
switch ($_SERVER['REQUEST_URI']) { 
    case '/sard/': 
     $twitter = 'example'; 
     break; 
    case '/pie/': 
     $twitter = 'example_2'; 
     break; 
    default: 
     break; 
} 
?> 

それは常にuriフルダイナミックパスを読み込むように、どのように私はそれを作ることができますか?

+2

あなたがあれば使用する必要があります(strpos($のURL、$ _SERVER [ 'REQUEST_URI'])!== false)の{//コード } –

答えて

1

strposを使用できます。

if(strpos($_SERVER['REQUEST_URI'], '/sard') === 0){ 
    echo 'oke'; 
} 

これは、/sardで始まるすべてのURLに一致します。 /sardの位置が0になっているため、

+1

はすでに私のコメントで、このことを示唆:) –

+0

いや私はあまりにもそれを少し見ました遅くなりましたが、あなたの提案は '/ bla/sard/bla'をURLとして許可します。もしOPが望むものなのか分かりません。引数を入れ替えても、$ _SERVER varが最初になるはずです。 – MarcHoH

1

あなたのステートメントで操作するために2番目のセグメントを使用することを意味します。

このシナリオではexplodeを使用することをお勧めします。

$getURI  = $_SERVER["REQUEST_URI"]; 
$expGetUri = array_filter(explode("/", $getURI)); 
$secondSeg = array_key_exists(1, $expGetUri) ? $expGetUri[1] : ""; 

switch($secondSeg) { 
    case "sard" : //statements goes here 
     break; 
    case "otheruri" : //statements goes here 
     break; 
    default : //your default statement 
} 

これはうまくいくはずです。コールバックと

array_filterフィルタ配列を使用

規約、トリムとしてデフォルトのコールバックを使用して、このhere

explodeの詳細(http://www.w3schools.com/php/func_string_explode.aspを)知っている針と文字列を分離し、そして配列

を返します。

array_key_exists最も単純な自己定義では、キー/インデックスが配列内に存在するかどうかをチェックします。

関連する問題