<?php if (preg_match('/\/(contact|news)\//', $_SERVER['REQUEST_URI']) === 1): ?>
<a href="/">link</a>
<?php endif; ?>
有沒有一種方法,我也可以指定一個單一頁面,如正則表達式的php if
指定文件夾/index.html
?我如何使用PHP,如果正則表達式的文件夾和單頁
<?php if (preg_match('/\/(contact|news)\//', $_SERVER['REQUEST_URI']) === 1): ?>
<a href="/">link</a>
<?php endif; ?>
有沒有一種方法,我也可以指定一個單一頁面,如正則表達式的php if
指定文件夾/index.html
?我如何使用PHP,如果正則表達式的文件夾和單頁
嘗試以下:
<?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');
?>
:
<?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'])): ?>
其中,特別是如果不熟悉正則表達式的語法,會使管理更簡單的東西一點點。
請參閱http://www.regular-expressions.info/alternation.html – mario
嘗試'preg_match('/ \/index \ .html /',$ _SERVER ['REQUEST_URI'])' –
我的意思是相同的正則表達式作爲文件夾,都在相同的條件。 – questy