現在のページのファイル名をページタイトルとして表示したいのですが、拡張子はありません。また、可能であれば、最初の文字は大文字にする必要があります。これは可能ですか?
7 に答える
誰もがワンライナーが大好きです:
ucfirst(pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME))
pathinfo()
ファイル名からパスと拡張子を削除する2番目の引数(PHP> = 5.2)
ところで、私は$_SERVER['PHP_SELF']
代わりに使用し__FILE__
ています。そうしないと、コードが別のファイルから実行された場合に壊れてしまうからです;-)
最初の文字を大文字にする必要がある場合は、を使用しますucfirst()
。それが大文字の最初の文字関数です。ucwords()
大文字の単語にも使用できます。
ファイル名から拡張子を引いたものを取得するには、関数を使用しpathinfo()
ます。
$path_parts = pathinfo(__FILE__);
echo ucfirst($path_parts['filename']);
はい、できますが、スペースに対して追加の解析を行うことをお勧めします。ただし、これが最も簡単な方法であり、指示に従って直接実行します。
echo '<title>';
echo ucwords(str_replace('.php', '', __FILE__));
echo '</title>';
ここで行ったことは、実行中のファイルの名前であるFILE定数を取得することです。.php拡張子を見つけて、空白に置き換えます(「.php」がファイル名の他の場所にないことを前提としています)。
関数ucwords()は、スペースで区切られた部分文字列の最初の文字を大文字にします。
スペースをさらに解析する場合は、ファイル名の形式を認識し、それに応じて文字列の置換/正規表現を行う必要があります。
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'] );
はい、それは可能です:
<?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";
nav.phpcontainerpage.phpとfooter.phpの3つのスクリプトがあります。
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ドキュメントを確認してください。