我有一些代码可以获取网址并将其放入变量中,然后我有另一行代码,它会在"?"之后的网址中包含所有内容。把它放到一个字符串中,最后我有另一个变量,它接受了SECOND"?"来自网址。例如:
$url = $_SERVER['REQUEST_URI'];
$query_string = parse_url($url, PHP_URL_QUERY);
$query_string2 = parse_url($query_string, PHP_URL_QUERY);
这是URL的示例:
然后我有一些代码检查使用这些变量的网址,如果找到" skap"在url中,它应该执行一些代码,如果没有,则不执行代码。
<?php if ($query_string == "skap"): ?>
这里的问题是我检查了第一个&#34;?&#34;之后的完整网址,所以它得到了&#34; skap?1&#34;并且它为它执行代码。 虽然我的网站是建立的,所以我有一系列的链接,所以我可以将网址作为&#34; skap?1&#34; &#34; SKAP 2&#34?;等等直到&#34; skap?14&#34;。
我该怎么做才能使if语句检查是否&#34; skap&#34;在url中,如果它看到它执行代码,并忽略其他任何东西,那么如果它&#34; skap?8&#34;或者只是&#34; skap&#34;重要的是,只要能找到&#34; skap&#34;它应该执行代码。
答案 0 :(得分:0)
使用preg_match。 preg_match不关心可能有什么前缀或后缀。如果匹配任何一个,它将返回true。
object
答案 1 :(得分:0)
这里是参考http://php.net/manual/en/function.strpos.php
$pos = strpos($query_string, 'skap');
if ($pos === false) {
//The string 'skap' was not found in the string '$query_string'
} else {
// The string 'skap' was found in the string '$query_string'"
}
答案 2 :(得分:0)
例如,拿一个这样的网址:
$url = 'http://localhost/index.php?skap?1&erer&hh=1';
这符合您的要求。
使用parse_url解析url会给你:
$components = parse_url($url);
var_dump($components);
array(2) {
["path"]=> string(21) "/index.php"
["query"]=> string(16) "skap?1&erer&hh=1"
}
然后检查skap
中是否存在字符串$components['query']
,例如像这样:
if (strpos($component['query'] !== false) {
// it was found, do something
}
如果&#39;跳过&#39;那么请检查应该是在字符串的开头:
if (strpos($component['query'] === 0) {
// it was found at string's beginning, do something
}
希望这会有所帮助。 (我知道你已经使用过parse_url,但我认为一个完整的答案会更好。)
答案 3 :(得分:0)
使用爆炸&#34;?&#34;并从网址中删除域名和网页,然后我们可以使用in_array来查看单词&#34; skap&#34;在那儿。
$url = ["http://localhost/index.php?skap?1",
"http://localhost/skap.php?flap?1"];
Foreach($url as $val){
If(skap($val)){
Echo "run code \n";
}Else{
Echo "don't run \n";
}
}
Function skap($url){
$arr = explode("?", $url);
Unset($arr[0]); // remove url domain and page name
If(in_array("skap", $arr)){
Return true;
}
}
返回:
run code
don't run