Dacă am script PHP, cum pot obține extensii din interiorul script?
De asemenea, s-a dat numele de un script de forma jquery.js.php
, cum pot extrage doar "jquery.js" parte?
Doar folosi PHP constantă magică __FILE__
pentru a obține curent filename.
Dar se pare că tu vrei la o parte, fără .php
. Deci...
basename(__FILE__, '.php');
O mai generic extensia de fișier remover va fi...
function chopExtension($filename) {
return pathinfo($filename, PATHINFO_FILENAME);
}
var_dump(chopExtension('bob.php')); // string(3) "bob"
var_dump(chopExtension('bob.i.have.dots.zip')); // string(15) "bob.i.have.dots"
Folosind standard șir de funcții de bibliotecă este mult mai repede, ca'd aștepta.
function chopExtension($filename) {
return substr($filename, 0, strrpos($filename, '.'));
}
Atunci când doriți să includă să știu ce fișier este în (ie. ce script numele a fost de fapt solicitat), utilizați:
basename($_SERVER["SCRIPT_FILENAME"], '.php')
Pentru că atunci când sunteți scris într-un fișier de obicei știu numele.
Edit: după Cum sa menționat de către Alec Teal, dacă utilizați link-urile simbolice se va arăta link-ul simbolic numele în loc.
Vezi http://php.net/manual/en/function.pathinfo.php
pathinfo(__FILE__, PATHINFO_FILENAME);
Aici este diferența între basename(__FILE__, ".php") " și " basename($_SERVER['REQUEST_URI'] ".php")
.
basename(__FILE__, ".php")
afișează numele de fișier în cazul în care acest cod este inclus - Aceasta înseamnă că, dacă includeți acest cod în header.php și pagina curentă este index.php, se va reveni header nu index.
basename($_SERVER["REQUEST_URI"], ".php")
- Dacă utilizați include acest cod în header.php și pagina curentă este index.php, se va reveni index nu header.
Aici este o lista cu ceea ce am'am găsit recent, căutând un răspuns:
//self name with file extension
echo basename(__FILE__) . '<br>';
//self name without file extension
echo basename(__FILE__, '.php') . '<br>';
//self full url with file extension
echo __FILE__ . '<br>';
//parent file parent folder name
echo basename($_SERVER["REQUEST_URI"]) . '<br>';
//parent file parent folder name with //s
echo $_SERVER["REQUEST_URI"] . '<br>';
// parent file name without file extension
echo basename($_SERVER['PHP_SELF'], ".php") . '<br>';
// parent file name with file extension
echo basename($_SERVER['PHP_SELF']) . '<br>';
// parent file relative url with file etension
echo $_SERVER['PHP_SELF'] . '<br>';
// parent file name without file extension
echo basename($_SERVER["SCRIPT_FILENAME"], '.php') . '<br>';
// parent file name with file extension
echo basename($_SERVER["SCRIPT_FILENAME"]) . '<br>';
// parent file full url with file extension
echo $_SERVER["SCRIPT_FILENAME"] . '<br>';
//self name without file extension
echo pathinfo(__FILE__, PATHINFO_FILENAME) . '<br>';
//self file extension
echo pathinfo(__FILE__, PATHINFO_EXTENSION) . '<br>';
// parent file name with file extension
echo basename($_SERVER['SCRIPT_NAME']);
Don't uita pentru a elimina :)
<br>
Aceasta funcționează și pentru mine, chiar și atunci când rula în interiorul unui incluse PHP fișiere, și vrei fisierului curent php fișier execută:
$currentPage= $_SERVER["SCRIPT_NAME"];
$currentPage = substr($currentPage, 1);
echo $currentPage;
Rezultatul:
index.php
$argv[0]
Am'am găsit-o mult mai simplu de utilizat $argv[0]
. Numele de executare script-ul este primul element în $argv
matrice. Spre deosebire de toate celelalte metode sugerat în alte răspunsuri, această metodă nu necesită utilizarea de basename()` pentru a elimina copac director. De exemplu:
ecou FILE;se întoarce ceva de genul
/my/directory/path/my_script.php`
echo $argv[0];
a se întoarce my_script.php
Ca unii au spus basename($_SERVER["SCRIPT_FILENAME"], '.php') " și " basename( __FILE__, '.php')
sunt bune moduri de a testa acest lucru.
Pentru mine, folosind cel de-al doilea a fost soluția pentru unele instrucțiuni de validare am fost a face
$filename = "jquery.js.php";
$ext = pathinfo($filename, PATHINFO_EXTENSION);//will output: php
$file_basename = pathinfo($filename, PATHINFO_FILENAME);//will output: jquery.js
`FILE utilizarea de exemple, bazate pe localhost server rezultate:
echo __FILE__;
// C:\LocalServer\www\templates\page.php
echo strrchr( __FILE__ , '\\' );
// \page.php
echo substr( strrchr( __FILE__ , '\\' ), 1);
// page.php
echo basename(__FILE__, '.php');
// page