我有一个PHP文件。在这个文件中我需要检查,如果我的URL有以下结尾:
www.example.de/dashboard/2/
所以结尾可以是一个数字1 - 99+
,它始终位于两个斜杠之间的url的末尾。我不能在这里使用$_GET
。如果它是$_GET
,那将很容易:
if ( isset($_GET['ending']) ) :
那么如果没有URL中的参数,我怎么能这样做呢?谢谢你的帮助!
$url = 'http://www.example.de/dashboard/2/';
$path = parse_url($url, PHP_URL_PATH); // '/dashboard/2/'
$parts = explode('/', $path); // ['', 'dashboard', '2', '']
$section = $parts[1]; // 'dashboard'
$ending = $parts[2]; // '2'
但是:ぁzxswい
您还可以使用https://3v4l.org/dv6Cn(这适用于基于Apache的Web服务器,但如果需要,您可以找到nginx或任何其他Web服务器的模拟资源)。
URL rewriting
在请求uri上使用正则表达式
更动态的方法是爆炸并使用array_filter删除空值然后选择最后一项。 如果项目* 1与项目相同,那么我们知道它是一个数字。 (爆炸的回报是字符串,所以我们不能使用is_int)
if(preg_match('^\/dashboard\/(\d+)', $_SERVER['REQUEST_URI'])){
foo();
}
首先,您需要将此URL定位到脚本 - 在Web服务器配置中。对于nginx和index.php:
$url = "http://www.example.de/dashboard/2/";
$parts = array_filter(explode("/", $url));
$ending = end($parts);
if($ending*1 == $ending) echo $ending; //2
第二 - 你需要解析URI。在$ end,你找到你想要的
try_files $uri @rewrite_location;
location @rewrite_location {
rewrite ^/(.*) /index.php?link=$1&$args last;
}
我会这么想的。如果URL始终相同或格式相同,我将执行以下操作:
$link_as_array = array_values(array_diff(explode("/", $url), array('')));
$max = count($link_as_array) - 1;
$end = $link_as_array[$max];
与<?php
$url = "http://www.example.de/dashboard/2/";
if (strpos($url, "www.example.de/dashboard") === 7 or strpos($url, "www.example.de/dashboard") === 8) {
$urlParts = explode("/", $url);
if (isset($urlParts[4]) && isNumeric($urlParts[4]))
echo "Yes! It is {$urlParts[4]}.";
}
?>
和strpos
的7
用于8
或http://
的URL。
如果设置了,上面将给出输出作为数字部分。我希望这会成功。