检查URL是否包含PHP中的内容

时间:2019-03-25 20:55:07

标签: php html url

我有一个PHP文件。在此文件中,我需要检查我的URL是否具有以下结尾:

www.example.de/dashboard/2/

因此结尾可以是数字1 - 99+,该数字始终位于两个斜杠之间的url末尾。我在这里不能使用$_GET。如果是$_GET,那很容易:

if ( isset($_GET['ending']) ) :

那么如何在URL中没有参数的情况下执行此操作?感谢您的帮助!

5 个答案:

答案 0 :(得分:2)

if(preg_match('^\/dashboard\/(\d+)', $_SERVER['REQUEST_URI'])){
    foo();
}

在请求uri上使用正则表达式

答案 1 :(得分:1)

您可以使用parse_urlexplode

  @override
  void initState() {
    super.initState();
    _controller = new AnimationController(
      duration: const Duration(seconds: 10),
      vsync: this,
    );
  }

演示:https://3v4l.org/dv6Cn

您还可以使用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)

我会这样想。如果网址始终相同或格式相同,我将执行以下操作:

  1. 检查大概的网址。
  2. 将URL分成多个部分。
  3. 查找是否有我要寻找的零件。
  4. 提取号码。
<?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]}.";
  }
?>

带有strpos7的{​​{1}}用于带有8http://的URL。

如果设置了上面的内容,则上面的内容将为您提供数字部分的输出。我希望这能解决。