2012-08-06 23 views
0

我是PHP新手,試圖根據用戶url返回true/false。例如左右(使用該在Drupal) 如果用戶是在:確定URI/URL中的最後一個文件夾

http://www.example.com/training我希望它返回true

http://www.example.com/training/home我想*我希望它返回true,它返回true

http://www.example.com/browse/training/results/

對於其他任何東西,但我想它是假的。

http://www.example.com/training/backpacking我希望它返回false。

我的第一個php腳本有bug ...去圖。無論如何,它不會顯示任何未經培訓的內容,但它會顯示在不需要的培訓子區域。

global $language; 
$curr_uri = check_plain(request_uri()); 

if ($language->language == 'en') 
    if (basename(dirname($curr_uri)) == 'training') 
     return TRUE; 
    else 
     return FALSE; 
else 
    return FALSE; 

我理解什麼需要完成的概念。我想檢查三個特定的uri,而不是顯示其他任何內容。我也試過:

global $language; 
$curr_uri = check_plain(request_uri()); 

if ($language->language == 'en') 
    if ($curr_uri == '/training/home') 
     return TRUE; 
    else 
     return FALSE; 
else 
    return FALSE; 

阿德南......我不知道你的修改是什麼,但我發現了一個錯字,它是與此代碼現在的工作:雖然你

<?php 
    global $language; 
    $curr_uri = check_plain(request_uri()); 

if ($language->language == 'en') 
    if($curr_uri == '/training/home' || $curr_uri == '/browse/training/results') 
    return TRUE; 
    else 
    return FALSE; 
else 
    return FALSE; 
?> 
+0

甚至在'if'或'else'之後只有一個語句,爲了便於閱讀,使用'{}'是一個好主意。在一個相關的問題上,我不確定我能在URL中看到一個模式,這些「好」的URL有什麼共同點? – Adi 2012-08-06 17:17:43

+0

您可以點擊[「編輯等等等等」](http://stackoverflow.com/posts/11832780/revisions)鏈接並查看編輯。 – Adi 2012-08-06 17:19:55

+0

哦確定這是有道理的。所以我使用{}像JavaScript。對於PHP來說我是新手,我正在從谷歌的字面上閱讀代碼片段,他們沒有{}。 – GPGVM 2012-08-06 17:20:34

回答

2
$pairs = array( array('training'), 
       array('training','home'), 
       array('browse','training','results')); 

$urls = explode('/',$_SERVER['REQUEST_URI']); 

foreach($pairs as $pair){ 
    if (!empty(array_diff($pair,$urls))) 
    return true; 
} 

return false; 
+0

謝謝你的回答,最好在一行或兩行中解釋OP的錯誤,以及你如何糾正錯誤,或者只是解釋你的代碼在做什麼。 – Adi 2012-08-06 17:23:01

+0

Ahhh解決問題的另一個好方法。使用數組將允許更多的條件,而不會失去語句。 – GPGVM 2012-08-06 17:36:45

相關問題