我是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_url
与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
演示: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
第一个参数是匹配文本句点后跟任意数量的字符的表达式。第二个参数告诉函数将匹配的字符串替换为空字符串,最后一个参数是要操作的变量。