上次做一个网站的时候,有一个products页面现实需要做一个判断来显示余内容。下面我总结一些方法,用来获取url不同的路径。
测试路径:http://www.34804804.com/yorking/index.php?id=5
//获取域名或主机地址
echo $_SERVER['HTTP_HOST'].”
“; #www.34804804.com
//获取网页地址
echo $_SERVER['PHP_SELF'].”
“; #/yorking/index.php
//获取网址参数
echo $_SERVER["QUERY_STRING"].”
“; #id=5
//获取用户代理
echo $_SERVER['HTTP_REFERER'].”
“;
//获取完整的url
echo ‘http://’.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo ‘http://’.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].’?’.$_SERVER['QUERY_STRING'];
#http://www.34804804.com/yorking/index.php?id=5
//包含端口号的完整url
echo ‘http://’.$_SERVER['SERVER_NAME'].’:’.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
#http://localhost:80/yorking/index.php?id=5
//只取路径
$url=’http://’.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
echo dirname($url);
#http://www.34804804.com/yorking
得出我们想要的路径之后,可以适当的做一些判断,判断路径当中是否有自己想包含的字符串:
1、strpos: 返回boolean值.FALSE和TRUE不用多说.用 “===”进行判断.strpos在执行速度上都比以上两个函数快,另外strpos有一个参数指定判断的位置,但是默认为空.意思是判断整个字符串.缺点是对中文的支持不好.
PHP判断字符串的包含代码如下:
$str= ‘abc’;
$needle= ‘a’;
$pos = strpos($str, $needle);
2、最简单的就是:
strpos($a, $b) !== false 如果$a 中存在 $b,则为 true ,否则为 false。
用 !== false (或者 === false)的原因是如果 $b 正好位于$a的开始部分,那么该函数会返回int(0),那么0是false,但$b确实位于$a中,所以要用 !== 判断一下类型,要确保是严格的 false。
php如何判断一个字符串是否包含另一个字符串
我觉得最简单的就是:
strpos($a, $b) !== false 如果$a 中存在 $b,则为 true ,否则为 false。
用 !== false (或者 === false)的原因是如果 $b 正好位于$a的开始部分,那么该函数会返回int(0),那么0是false,但$b确实位于$a中,所以要用 !== 判断一下类型,要确保是严格的 false。
其它的还有 PHP 原生支持的函数,如 strstr(),stristr() 等,直接判断就可以了。