Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从页面命名函数中删除PHP扩展_Php_Html - Fatal编程技术网

从页面命名函数中删除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']));
    }
  ?>