PHP 스크립트가있는 경우 해당 스크립트 내에서 파일 이름을 어떻게 얻을 수 있습니까?
또한 양식의 스크립트 이름이 주어지면 jquery.js.php
"jquery.js"부분 만 어떻게 추출 할 수 있습니까?
also
는 추가 질문을하고 있음을 나타냅니다. esh. 일부 친구들.
PHP 스크립트가있는 경우 해당 스크립트 내에서 파일 이름을 어떻게 얻을 수 있습니까?
또한 양식의 스크립트 이름이 주어지면 jquery.js.php
"jquery.js"부분 만 어떻게 추출 할 수 있습니까?
also
는 추가 질문을하고 있음을 나타냅니다. esh. 일부 친구들.
답변:
PHP 매직 상수 __FILE__
를 사용하여 현재 파일 이름을 얻으십시오.
그러나 당신이없는 부분을 원하는 것 같습니다 .php
. 그래서...
basename(__FILE__, '.php');
더 일반적인 파일 확장자 제거제는 다음과 같습니다.
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"
예상대로 표준 문자열 라이브러리 함수를 사용하는 것이 훨씬 빠릅니다 .
function chopExtension($filename) {
return substr($filename, 0, strrpos($filename, '.'));
}
substr
하고 strrchr
마지막 없애기 .
과 모든 것을 뒤로?
__FILE__
있는 .php
파일을 제공 하지만 실제로 $_SERVER['SCRIPT_NAME']
는 현재 실행중인 최상위 스크립트 (웹 서버에 의해 또는 명령 줄에서 직접 호출 된 스크립트)를 원합니다.
포함 파일에 어떤 파일이 있는지 (예 : 실제로 요청 된 스크립트 이름) 알기를 원하면 다음을 사용하십시오.
basename($_SERVER["SCRIPT_FILENAME"], '.php')
파일에 쓸 때 일반적으로 파일 이름을 알고 있기 때문입니다.
편집 : Alec Teal이 지적한 것처럼 심볼릭 링크를 사용하면 심볼릭 링크 이름이 대신 표시됩니다.
pathinfo($_SERVER["SCRIPT_FILENAME"], PATHINFO_BASENAME);
http://php.net/manual/en/function.pathinfo.php 참조
pathinfo(__FILE__, PATHINFO_FILENAME);
여기서 간의 차이 basename(__FILE__, ".php")
와 basename($_SERVER['REQUEST_URI'], ".php")
.
basename(__FILE__, ".php")
이 코드가 포함 된 파일 이름을 보여줍니다. 즉,이 코드를 header.php에 포함 하고 현재 페이지가 index.php 이면 index가 아닌 헤더 를 반환 합니다.
basename($_SERVER["REQUEST_URI"], ".php")
-이 코드를 header.php에 포함 하고 현재 페이지가 index.php 이면 헤더가 아닌 인덱스 를 반환 합니다.
SCRIPT_FILENAME
나 REQUEST_URI
? 둘 다 서버 변수이지만 REQUEST_URI
사용자가 값을 변경 하지 않았습니까? "URI 주입"위협을 가능하게합니다
basename($_SERVER["REQUEST_URI"], ".php");
링크가 양식 인 경우 @KhandadNiazi 는 폴더 이름을 반환합니다 http://example.com/somefolder
. while basename($_SERVER['PHP_SELF'], ".php");
은 항상 스크립트 이름을 반환합니다 (이 경우) index
.
도움이 될 수 있습니다.
basename($_SERVER['PHP_SELF'])
include를 사용하더라도 작동합니다.
.php
영업 이익이 없애려고하는 말
basename($_SERVER['PHP_SELF'], ".php");
alex의 대답은 정확하지만 정규 표현식 없이이 작업을 수행 할 수도 있습니다.
str_replace(".php", "", basename($_SERVER["SCRIPT_NAME"]));
hey.php-i-am-a-weird-filename.php
있습니다.
최근에 답변을 검색 한 결과는 다음과 같습니다.
//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']);
제거하는 것을 잊지 마십시오 :)
<br>
index.php
포함 header.php
차례 포함 functions.php
, 어디에 log_location()
거주하고 있습니다. 에 전화 log_location()
를 header.php
한 다음 실행 index.php
합니다. 위의 모든 기능은 기능이나 색인 또는 도메인 또는 이들의 일부 변형을 인쇄합니다. 함수를 호출 한 PHP 스크립트를 알고 싶지 않습니다. (한 줄짜리) 가능합니까? @begoyan
보다 일반적인 방법은 pathinfo ()를 사용하는 것 입니다. 버전 5.2부터는을 지원합니다 PATHINFO_FILENAME
.
그래서
pathinfo(__FILE__,PATHINFO_FILENAME)
또한 필요한 것을 할 것입니다.
이 시도
$current_file_name = $_SERVER['PHP_SELF'];
echo $current_file_name;
__FILE__
localhost 서버 결과를 기반으로 예제를 사용하십시오.
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