PHP:如何从URL中删除所有类型的扩展名(包括句点)


PHP: How to strip all types of extensions from URL (incl. period)

我是PHP的新手,希望有人可以帮助我。

我希望PHP给我网站当前页面的名称。重要的是我需要它,没有任何前导斜杠,没有任何尾随扩展名等,只是普通的页面名称。

例:
页面的网址 http://www.myurl.com/index.php?lang=en在这种情况下,它应该只返回"索引"。

我找到了一种方法来摆脱以下内容的前导部分,但很难删除尾随部分,因为这是可变的(它可以只是.php.php?lang=en.php=lang=de等)。

$pageName = basename($_SERVER["REQUEST_URI"]);

我唯一发现的是以下内容,但这不包括变量扩展部分:

$pageName = basename($_SERVER["REQUEST_URI"], ".php");

有人可以告诉我如何摆脱尾随部分吗?

提前非常感谢,话筒

您可以将parse_urlpathinfo结合使用:

<?php
$input  = 'http://www.myurl.com/index.php?lang=en';
$output = pathinfo(parse_url($input, PHP_URL_PATH), PATHINFO_FILENAME); 
var_dump($output); // => index

演示:https://eval.in/382330

一种可能的方法是:

$url = "http://www.myurl.com/index.php?lang=en";
preg_match('/'/(['w-_]+)'.php/i',$url,$match);
echo $match[1];

如果您需要有关正则表达式的帮助,请查看此处:https://regex101.com/r/cM8sS3/1

这是最简单的解决方案。

$pagename = basename($_SERVER['PHP_SELF']);
$a = explode(".",$pagename);
echo $a[0];

关于如何做到这一点的教程

使用 .htaccess 文件,您可以:

将用户重定向到其他页面

密码保护特定目录

通过 IP 阻止用户 防止热

链接您的图像

重写 URI

指定您自己的错误文档

试试这个

//return url
$pageName = base64_decode($_GET["return_url"]);
function Url($pageName) {
    $pageName= strtolower($pageName);
    $pageName= str_replace('.',' ',$pageName);
    $pageName= preg_replace("/[^a-z0-9_'s-]/", "", $pageName);
    $pageName= preg_replace("/['s-]+/", " ", $pageName);
    $pageName= preg_replace("/['s_]/", "-", $pageName);
    return $pageName ;
}
$cleanurl=Url($pageName);
echo $cleanurl;

在这种情况下,我只会使用正则表达式。代码如下:

$pagename = basename("http://www.myurl.com/index.php?lang=en");
$pagename = preg_replace("/'..*/", "", $pagename);

您可以在此处查看工作演示:https://ideone.com/RdrHzc

第一个参数是匹配文本句点后跟任意数量的字符的表达式。第二个参数告诉函数将匹配的字符串替换为空字符串,最后一个参数是要操作的变量。