从页面命名函数中删除PHP扩展
如何从此函数中删除脚本扩展从页面命名函数中删除PHP扩展,php,html,Php,Html,如何从此函数中删除脚本扩展 <?php function curPageName() { return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); } echo "The current page name is ".curPageName(); ?> 例如,它将回显当前页面名为index.php。如何删除.php?如果可以安全地假设您的所有php脚本都将.php作为文件扩展
<?php
function curPageName() {
return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
}
echo "The current page name is ".curPageName();
?>
例如,它将回显当前页面名为
index.php
。如何删除.php
?如果可以安全地假设您的所有php脚本都将.php
作为文件扩展名(而不是,例如,.php5
或其他),那么您可以执行以下操作:
substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['SCRIPT_NAME'],"/")+1,-4);
-4
将从末端切断.php
。尝试substr()
将从字符串中剪切最后四个字符并返回保留字符串,如下所示:-
echo substr('sdgfjsgdfj.php',0,-4); //returns sdgfjsgdfj
0 = start of string, -4 = remove string from back limit
substr ( string $string , int $start [, int $length ] )
因此,如果要删除.php
,则字符长度为4,因此需要传递-4
,并需要从开始到最后一个条带-4
的结果
要了解更多信息,请遵循手册:-去掉最后一个点后面的所有内容,而不考虑文件结尾(因为我喜欢正则表达式):
如果还要删除前面的路径,请执行以下操作:
<?php
function curPageName() {
return preg_replace('#\..+?$#','',basename($_SERVER['SCRIPT_NAME']));
}
?>
Add,-4
紧接着+1
?@NiettheDarkAbsol这是我在谷歌上找到的一个脚本,不是我写的。试试这个简单的选项rtrim($\u SERVER[“script\u NAME”],“.php”)
以防filname有abcd.phpd.php
?这个问题的所有答案都会有假设。在您的情况下,这假设/path/to/something.phpfunctions.php
不是一件事。@NiettheDarkAbsol还添加了substr()@rakesharma,这基本上是我的答案,您没有解释这两种解决方案的任何缺点。@NiettheDarkAbsol请回送您的结果,看看您得到了什么回送substr('fsgdjh.php',-4)@Rakeshharma完全按照我说的做了:fsgdjh
@Rakeshharma你是说你的答案在你的编辑中剽窃了我的代码,但没有解释缺点??
在这里是阻碍,因为$
-你想尽可能匹配i
是无用的,因为正则表达式本身没有字母s
可能是个坏主意,因为脚本名中没有换行符……实际上是?这是一个非常好的主意,因为您将只删除“.”之后的最后一部分。如果多次出现“.”,例如“index.en.php”,它将返回“index.en”。但是对于“i”和“s”,你是完全正确的:)嗯。。。实际上,您最好使用\...[^.]+
,因为这将避免由于存在多个
而产生的任何复杂情况。不需要它-
在[]
中没有任何意义。
<?php
function curPageName() {
return preg_replace('#\..+?$#','',$_SERVER['SCRIPT_NAME']);
}
?>
<?php
function curPageName() {
return preg_replace('#\..+?$#','',basename($_SERVER['SCRIPT_NAME']));
}
?>