检查URL是否包含PHP内容

问题描述 投票:2回答:5

我有一个PHP文件。在这个文件中我需要检查,如果我的URL有以下结尾:

www.example.de/dashboard/2/

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

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

那么如果没有URL中的参数,我怎么能这样做呢?谢谢你的帮助!

php html url
5个回答
1
投票

你可以使用parse_urlexplode

$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服务器的模拟资源)。


2
投票
URL rewriting

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


1
投票

更动态的方法是爆炸并使用array_filter删除空值然后选择最后一项。 如果项目* 1与项目相同,那么我们知道它是一个数字。 (爆炸的回报是字符串,所以我们不能使用is_int)

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


1
投票

首先,您需要将此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;
}

0
投票

我会这么想的。如果URL始终相同或格式相同,我将执行以下操作:

  1. 检查大致的URL。
  2. 将URL拆分为多个部分。
  3. 找出是否有我正在寻找的部分。
  4. 提取数字。
$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]}."; } ?> strpos7用于8http://的URL。

如果设置了,上面将给出输出作为数字部分。我希望这会成功。

© www.soinside.com 2019 - 2024. All rights reserved.