2013-07-24 45 views
0
<?php if (preg_match('/\/(contact|news)\//', $_SERVER['REQUEST_URI']) === 1): ?> 
    <a href="/">link</a> 
<?php endif; ?> 

有沒有一種方法,我也可以指定一個單一頁面,如正則表達式的php if指定文件夾/index.html我如何使用PHP,如果正則表達式的文件夾和單頁

+0

請參閱http://www.regular-expressions.info/alternation.html – mario

+0

嘗試'preg_match('/ \/index \ .html /',$ _SERVER ['REQUEST_URI'])' –

+0

我的意思是相同的正則表達式作爲文件夾,都在相同的條件。 – questy

回答

0

嘗試以下:

<?php if (preg_match('/\/(contact|news)\/index\.html/', $_SERVER['REQUEST_URI']) === 1): ?> 
    <a href="/">link</a> 
<?php endif; ?> 

UPDATE

基於下面你對此有何評論是,應該工作的代碼:這樣寫

<?php 
// you can add .* after index\.html you want to match index.html with get variables 
echo preg_match('/\/(index\.html.*|contact\/.*|news\/.*)/','/index.html'); 
// or just make it strict to match only index.html 
echo preg_match('/\/(index\.html|contact\/.*|news\/.*)/','/index.html'); 
echo '<br>'; 
echo preg_match('/\/(index\.html|contact\/.*|news\/.*)/','/contact/blablabla'); 
echo '<br>'; 
echo preg_match('/\/(index\.html|contact\/.*|news\/.*)/','/news/blablabla'); 

?> 
+0

不幸的是沒有工作。它沒有返回任何錯誤,但它沒有加載條件中的內容。 – questy

+0

它應該匹配:'/ contact/index.html'或'/ news/index.html'在這裏檢查:http://phpfiddle.org/main/code/5wf-8up –

+0

哦,對不起,我猜我不清楚。我的意思是/ contact/or/news /中的任何頁面,以及網站根目錄中的/index.html頁面。像'example.com/news/*','example.com/contact/*','example.com /' – questy

1

<?php 
if (preg_match('/\/(contact\/|news\/|index\.html)/', $_SERVER['REQUEST_URI'])): 
?> 

您可以根據需要定義任意數量的頁面(注意最後的/已被移動)。儘管如此,這可能很快變得笨拙。

您也不妨考慮使用preg_quote

<?php 
$startsWith = array(
    'contact/', 
    'news/', 
    'index.html' 
); 
foreach($startsWith as &$string) { 
    $string = preg_quote($string); 
} 
if (preg_match('/\/(' . implode('|', $startsWith) . ')/', $_SERVER['REQUEST_URI'])): ?> 

其中,特別是如果不熟悉正則表達式的語法,會使管理更簡單的東西一點點。

+0

嘗試使用第一個選項,但它似乎只識別/ contact /和/ news/part,不是單個頁面。 – questy

+0

「單頁」究竟是什麼,請具體說明。在你要求的一個頁面 - 'index.html'的問題中,你是否期望它匹配根目錄中的任何html頁面(這不是你要求的,這不是你已經回答的)。 – AD7six

+0

對不起,我的意思是網站的根,'example.com/index.html',以及'/ contact /'和'/ news /' – questy