我在internetz上找到了这个代码,它会检查当前页面的URL;
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
所以现在我可以做这样的事情;
elseif (curPageURL() == "http://www.example.com/pageexample") {
<meta tags here>
}
大。但我也想将它用于分页页面。这些网址如下所示:
http://www.example.com/pageexample?start=30&groep=0
http://www.example.com/pageexample?start=60&groep=0
http://www.example.com/pageexample?start=90&groep=0
[....]
http://www.example.com/pageexample?start=270&groep=0
我可以为每个链接使用if语句..但我更愿意使用一个。是否可以添加通配符或其他内容?像这样我猜(注意*
)
elseif (curPageURL() == "http://www.example.com/pageexample" OR curPageURL() == "http://www.example.com/pageexample?start=*&groep=0") {
修改:我想对所有这些网址执行此操作,因为我想为他们提供相同的meta description
,<title>
和<link rel="canonical"
。我可以通过为每个页面(10 + atm)执行if语句来手动执行此操作,但我认为有更好的方法。
答案 0 :(得分:3)
为什么不使用parse_url()
功能呢?从手册页:
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
?>
// The above would print
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
对于您的特定情况,您可以检查host
和path
变量。
答案 1 :(得分:2)
听起来很像正则表达式问题:
if (preg_match("#^http://www.example.com/pageexample(\?start=[^&]*&groep=0)?#", curPageURL())) {
// it matches
}
表达式[^&]*
的行为类似于*
。; to match non-empty items, use
[^&amp;] +`。它匹配这些:
http://www.example.com/pageexample
http://www.example.com/pageexample?start=30&groep=0
<强>更新强>
为什么您需要与完整的规范网址进行比较并不完全清楚,除非您有多个域指向相同的代码库。
答案 2 :(得分:1)
您应该使用字符串比较功能
if (strstr(curPageURL(), 'http://www.example.com/')) !== FALSE) {
// curPageURL() contains http://www.example.com/
}
或
if (preg_match('/^http\:\/\/www\.example\.com\//', curPageURL()) {
// curPageURL() starts with http://www.example.com/
}
有很多方法可以做到这一点
答案 3 :(得分:1)
你可以包装这个
elseif (curPageURL() == "http://www.example.com/pageexample" OR curPageURL() == "http://www.example.com/pageexample?start=*&groep=0") {
在while循环中,为每个迭代都有通配符的变量添加30。
答案 4 :(得分:0)
if (preg_match('/http:\/\/www\.example\.com\/pageexample\?start=[0-9]+&groep\=0/i', "http://www.example.com/pageexample?start=34&groep=0")) {
echo "A match was found.";
else {
echo "A match was not found.";
}
答案 5 :(得分:0)
如果您不使用$ _SERVER数组中的query_string元素,则所有分页的网址都将返回相同的网址:http://www.example.com/pageexample,您可以查看
echo $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] ;
VS
echo $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"].'?'.$_SERVER["QUERY_STRING"] ;
你会看到在第一种情况下你没有收到GET参数