【问题标题】:Remove PHP extension from page naming function从页面命名功能中删除 PHP 扩展
【发布时间】:2014-07-11 12:16:33
【问题描述】:

如何从这个函数中删除脚本扩展?

<?php
function curPageName() {
 return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
}

echo "The current page name is ".curPageName();
?>

例如,它将回显当前页面名称为index.php。如何删除 .php

【问题讨论】:

  • +1之后添加,-4
  • @NiettheDarkAbsol 这是我在google上找到的脚本,不是我写的。
  • 试试这个简单的选项rtrim($_SERVER["SCRIPT_NAME"], ".php")

标签: php html


【解决方案1】:

试试substr()

echo "The current page name is ".substr(curPageName(),0,-4); 

将从字符串中删除最后四个字符并返回剩余的字符串,例如:-

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 并且需要从开始的结果所以从 0 开始到最后一条带 -4 凝视

更多请关注手册:- http://php.net/manual/en/function.substr.php

【讨论】:

  • 如果 filname 有 abcd.phpd.php??
  • 这个问题的所有答案都带有假设。在您的情况下,这假设 /path/to/something.phpfunctions.php 不是一个东西。
  • @NiettheDarkAbsol 还添加了 substr()
  • @RakeshSharma 这基本上是我的回答,您未能解释这两种解决方案的任何缺点。
  • @NiettheDarkAbsol 请回显你的结果,看看你得到了什么
【解决方案2】:

去掉最后一个点后面的所有内容,不管文件结尾如何(因为我喜欢正则表达式):

  <?php
    function curPageName() {
      return preg_replace('#\..+?$#','',$_SERVER['SCRIPT_NAME']);
    }
  ?>

如果你也想去掉前面的路径:

  <?php
    function curPageName() {
      return preg_replace('#\..+?$#','',basename($_SERVER['SCRIPT_NAME']));
    }
  ?>

【讨论】:

  • ? 在这里受到阻碍,因为$ - 你想要尽可能地匹配。 i 没用,因为正则表达式本身没有字母。 s 可能是个坏主意,因为脚本名称中没有换行符...
  • 其实?是一个非常好的主意,因为您只会删除“.”之后的最后一部分。如果“.”出现多次,例如“index.en.php”,它将返回“index.en”。但是对于“i”和“s”,你是完全正确的:)
  • 嗯...实际上,您最好使用\.[^.]+,因为这样可以避免出现多个.s 带来的任何并发症。
  • 不需要 - .[] 中没有任何意义。
【解决方案3】:

如果可以安全地假设您的所有 PHP 脚本都有 .php 作为文件扩展名(而不是,例如,.php5 或其他),那么您可以这样做:

substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['SCRIPT_NAME'],"/")+1,-4);

-4 会从末尾切断.php

【讨论】:

  • echo substr('fsgdjh.php',-4);?
  • @RakeshSharma 完全按照我说的去做:fsgdjh
  • @RakeshSharma 你的意思是你的答案在你的编辑中扯掉了我的代码,但没有解释缺点?
猜你喜欢
  • 2017-01-16
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
相关资源
最近更新 更多