我想将当前页面文件名显示为页面标题,但没有扩展名。如果可能,第一个字符应该大写。这可能吗?
7 回答
每个人都喜欢单行:
ucfirst(pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME))
从文件名中去除路径和扩展名的第二个参数pathinfo()
(PHP >= 5.2)
顺便说一句,我使用$_SERVER['PHP_SELF']
而不是__FILE__
因为否则如果代码从另一个文件运行它会中断;-)
如果你想从script.php
到Script
,是的:
// pathinfo give info about given file and returns it into an associative array:
$info = pathinfo( __FILE__ );
// the filename key holds file name without extension nor parent path:
$title = ucwords( $info['filename'] );
对于第一个字母需要大写,使用ucfirst()
. 那就是大写优先字符函数。您也可以ucwords()
用于大写单词。
要获得文件名减去扩展名,请使用pathinfo()
funciton。
$path_parts = pathinfo(__FILE__);
echo ucfirst($path_parts['filename']);
是的,您可以这样做,但您可能需要对空格进行一些额外的解析。但是,这是最简单的方法,并且直接按照您的指示进行。
echo '<title>';
echo ucwords(str_replace('.php', '', __FILE__));
echo '</title>';
我在这里所做的是获取FILE常量,它是正在执行的文件的名称。找到 .php 扩展名并将其替换为空白(假设“.php”不会出现在文件名中的其他任何位置)。
函数 ucwords() 将由空格分隔的子字符串的首字母大写。
如果您想进一步解析空格,则需要识别文件名的格式并相应地进行字符串替换/正则表达式。
是的,有可能:
<?php
$page = basename($_SERVER['PHP_SELF']); // Get script filename without any path information
$page = str_replace( array( '.php', '.htm', '.html' ), '', $page ); // Remove extensions
$page = str_replace( array('-', '_'), ' ', $page); // Change underscores/hyphens to spaces
$page = ucwords( $page ); // uppercase first letter of every word
echo "This title is: $page";
您有 3 个脚本:nav.php containerpage.php 和 footer.php。
在 nav.php 中,输入:
<title><?php
if (isset($subtitle)) {echo "$subtitle";}
else {echo "some other title";}
?>
</title>
在 container.php 中,输入:
<?php $subtitle = ucwords(str_replace('.php', '', __FILE__)); ?>
该行之后包括您的 nav.php 脚本:
<?php include("nav.php"); ?>
根据您的站点结构,这可能会或可能不会起作用,但这就是我在其他时候解决此问题的方式。
我知道这个问题已有 6 年历史,但我只是想提供另一种获取文件名的方法。
$_SERVER['SCRIPT_FILENAME']
或者
$_SERVER['SCRIPT_NAME']
查看SERVER 全局上的PHP 文档。