2017-02-17 8 views
0

ページのURLをチェックしてそれに応じてページをマークする文がありますが、if文にチェックするオプションが1つしかない場合にのみ機能します。 PHPの条件文が機能しない

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 

<?php if (strpos($url, 'events/eventname')!= false) { ?> 
    ~markup~ 
<? } ?> 

私は2つの可能性のURLをチェックするために、それを変更する場合

...

<?php if (strpos($url, 'events/eventname')!= false) { ?> 
    ~markup~ 
<? }else if (strpos($url, 'events/othereventname')!= false) { ?> 
    ~markup~ 
<? } ?> 

...ページがロードされません。誰かがこの機能に何が間違っているか教えてもらえますか?

*編集:それは、私は、検索ストリングは、クエリ文字列の先頭にあるとき

+1

URLはどこに定義されていますか?また、 "urlhere"または "otherurlher"とは何ですか?これらの情報は、開発者がコードを理解するのに役立ちます。 – Ad5001

+0

!=の代わりに!==を試してください。 PHPのドキュメントについて:警告 この関数は、Boolean FALSEを返すことがありますが、FALSEと評価されるブール値でない値も返すことがあります。詳細についてはブーリアンに関するセクションをお読みください。この関数の戻り値をテストするには、===演算子を使用します。 (http://php.net/manual/en/function.strpos.php) –

+0

@ Ad5001 Gameur codeur autre URLはコードのどこかで定義されています - 私はそれを含めなかったか、実際のURL(urlhereそれ以外は問題に直接関係していなかったため)。 –

答えて

2

strposは0を返すの$ url変数と、より具体的なURLの例が含まれている要求されたので。あなたは!= to!==を置き換えることができます。そうでなければ、PHPは内部的にfalseをゼロに変換します。これは誤った比較結果につながります。

<?php 
var_dump(strpos('aaa', 'a')); 
echo var_dump(strpos('aaa', 'a') === false); 
echo var_dump(strpos('aaa', 'a') == false); 
+0

答えをありがとうが、それは動作していないようだ。 –

-2

よりもむしろstrpos()あなたは、ドメイン名の後に何があるのリクエストURIを取得することができます(つまり、使用して::たとえば

www.example.com/foo/barはあなたを与えるだろう/ fooのを/バー)。

$url = $_SERVER['REQUEST_URI']; 

if($url == "/foo/bar") { 
    // markup 
} elseif($url == "/bar/foo") { 
    // markup 
} else { 
    // markup 
} 
1

は、あなたがelseifを使用する必要がありながら、別の構文の問題は、else ifある位置0にある

ただ念の文字列に!==比較を使用するようにしてください。

短いphpタグ<?も完全な<?phpに変更してみてください。

+0

答えてくれたChris Cynarskiに感謝しますが、これらの修正のどちらも問題を解決しませんでした。 –

+0

短い<! 'の代わりに、完全なphpタグ' <?php'を使用してみてください。 –

+0

短いタグが有効になっていない場合、最初のタグは有効ではありません。 –

関連する問題