我有一个PHP文件。在此文件中,我需要检查我的URL是否具有以下结尾:
www.example.de/dashboard/2/
因此结尾可以是数字1 - 99+
,该数字始终位于两个斜杠之间的url末尾。我在这里不能使用$_GET
。如果是$_GET
,那很容易:
if ( isset($_GET['ending']) ) :
那么如何在URL中没有参数的情况下执行此操作?感谢您的帮助!
答案 0 :(得分:2)
if(preg_match('^\/dashboard\/(\d+)', $_SERVER['REQUEST_URI'])){
foo();
}
在请求uri上使用正则表达式
答案 1 :(得分:1)
@override
void initState() {
super.initState();
_controller = new AnimationController(
duration: const Duration(seconds: 10),
vsync: this,
);
}
您还可以使用URL rewriting(这是基于Apache的Web服务器,但是您可以找到Nginx或其他任何Web服务器的类似资源)。
答案 2 :(得分:1)
一种更动态的方法是爆炸并使用array_filter删除空值,然后选择最后一个项目。
如果项目* 1与项目相同,那么我们知道它是一个数字。
(爆炸的返回是字符串,因此我们不能使用is_int)
$url = "http://www.example.de/dashboard/2/";
$parts = array_filter(explode("/", $url));
$ending = end($parts);
if($ending*1 == $ending) echo $ending; //2
答案 3 :(得分:1)
首先,您需要将此URL定位为脚本-在Web服务器配置中。对于nginx和index.php:
try_files $uri @rewrite_location;
location @rewrite_location {
rewrite ^/(.*) /index.php?link=$1&$args last;
}
第二个-您需要解析URI。在$ end中,您可以找到想要的东西
$link_as_array = array_values(array_diff(explode("/", $url), array('')));
$max = count($link_as_array) - 1;
$end = $link_as_array[$max];
答案 4 :(得分:0)
我会这样想。如果网址始终相同或格式相同,我将执行以下操作:
<?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
的{{1}}用于带有8
或http://
的URL。
如果设置了上面的内容,则上面的内容将为您提供数字部分的输出。我希望这能解决。