2013-10-20 2 views
2

문자열 끝에 ".php"가 있으면 제거하고 싶습니다. 다음을 고려하십시오.PHP rtrim ".php"

$filename = 'index'; 
rtrim($filename,".php");//returns "index" 

$filename = 'search'; 
rtrim($filename,".php");//returns "searc" 

왜 이런 일이 발생합니까? 나는 그것이 문자 'h'로 끝나는 것과 관련이있는 것처럼 느낍니다 - 'h'는 rtrim의 문자열에 있습니다. 그래서 정규 표현식 (.php$)을 사용하여 차이가 있는지 확인했지만 시도하지 않았습니다. 이 경우 있도록

+0

대신'basename ($ filename, '.php')'또는 pathname() 함수를 사용하십시오. –

답변

7

rtrim가 두 번째 인수와 같은 문자의 목록을 허용, 그것은 .php 확장 때, 캐릭터 라인의 나머지 부분에서 발견 된 ., p, 또는 h 문자뿐만 아니라 트림됩니다.

대신 preg_replace("/(.+)\.php$/", "$1", $filename);을 사용하거나 문자가 아닌 서버에 파일이있는 경우 basename($filename, '.php')을 사용해보십시오.

+1

감사합니다. 내가 보통 공백에 사용했던 rtrim에 대한 나의 오해. 여분 마일 가서 preg_replace를 주셔서 감사합니다. – Joao

2

rtrim의 두 번째 인수는 문자 목록이있는 문자열입니다. 이 경우 P, H, 및 P는 제거됩니다. 당신의 끈에서, 그래서 searc 돌아 오는 중입니다.

1

확장 프로그램을 단순히 제거하려고한다면 다음을 사용하십시오. $ filename = 'index.php'; $ name = strstr ($ filename, '.', true);