PHP:如何从 URL 中删除所有类型的扩展名(包括句点)
PHP: How to strip all types of extensions from URL (incl. period)
我是 PHP 的新手,希望有人能帮助我。
我希望 PHP 提供我网站 当前页面的名称 。
重要的是我需要这个没有任何前导斜杠和任何尾随扩展名等,只是简单的页面名称。
示例:
页面的 URL 是 http://www.myurl.com/index.php?lang=en
在这种情况下,它应该只 return "index".
我找到了一种使用以下方法去除前导部分的方法,但很难去除尾随部分,因为这是可变的(它可以只是 .php
或 .php?lang=en
或 .php=lang=de
等)。
$pageName = basename($_SERVER["REQUEST_URI"]);
我唯一找到的是以下内容,但这不包括变量扩展部分:
$pageName = basename($_SERVER["REQUEST_URI"], ".php");
有人能告诉我如何去掉结尾部分吗?
非常感谢,
麦克
With an .htaccess file you can:
Redirect the user to different page
Password protect a specific directory
Block users by IP Preventing hot
linking of your images
Rewrite URIs
Specify your own Error Documents
一种可能的方法是:
$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];
您可以使用 parse_url
in combination with pathinfo
:
<?php
$input = 'http://www.myurl.com/index.php?lang=en';
$output = pathinfo(parse_url($input, PHP_URL_PATH), PATHINFO_FILENAME);
var_dump($output); // => index
试试这个
//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
第一个参数是一个表达式,它匹配后跟任意数量字符的文字句点。第二个参数告诉函数用空字符串替换匹配的字符串,最后一个参数是要操作的变量。
我是 PHP 的新手,希望有人能帮助我。
我希望 PHP 提供我网站 当前页面的名称 。 重要的是我需要这个没有任何前导斜杠和任何尾随扩展名等,只是简单的页面名称。
示例:
页面的 URL 是 http://www.myurl.com/index.php?lang=en
在这种情况下,它应该只 return "index".
我找到了一种使用以下方法去除前导部分的方法,但很难去除尾随部分,因为这是可变的(它可以只是 .php
或 .php?lang=en
或 .php=lang=de
等)。
$pageName = basename($_SERVER["REQUEST_URI"]);
我唯一找到的是以下内容,但这不包括变量扩展部分:
$pageName = basename($_SERVER["REQUEST_URI"], ".php");
有人能告诉我如何去掉结尾部分吗?
非常感谢, 麦克
With an .htaccess file you can:
Redirect the user to different page
Password protect a specific directory
Block users by IP Preventing hot
linking of your images
Rewrite URIs
Specify your own Error Documents
一种可能的方法是:
$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];
您可以使用 parse_url
in combination with pathinfo
:
<?php
$input = 'http://www.myurl.com/index.php?lang=en';
$output = pathinfo(parse_url($input, PHP_URL_PATH), PATHINFO_FILENAME);
var_dump($output); // => index
试试这个
//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
第一个参数是一个表达式,它匹配后跟任意数量字符的文字句点。第二个参数告诉函数用空字符串替换匹配的字符串,最后一个参数是要操作的变量。