나는 그림을 서버에 저장하고 그림 이름을 데이터베이스에 저장하는 PHP 응용 프로그램이 있습니다. 내가 가진 문제는 그림 이름에 경로 (예 : 1220368812/chpk2198933_large-2.jpg)가 저장된 경로/폴더가 포함되어 있기 때문에 "1220368812 /"를 제거하고 올바른 그림 이름이 저장된 str_replace 패턴이 필요하다는 것입니다. db. 또한 str_replace 패턴이 얼마나 정확하게 작동하는지 또는 적어도 사용하는 패턴이 어떻게 작동 하는지를 설명하는 좋은 링크를 보내 주시면 감사하겠습니다.php str_replace pattern
답변
이
basename
시도는 - 경로명에서 파일 이름 만 반환
예 # 1 기본 이름() 예를
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
basename
제거하기 때문에 str_replace
아무것도 필요 없다 경로 부분. 또한 str_replace
은 패턴을 허용하지 않습니다. 모든 작업은 이며 검색 문자열의 모든 항목을 대체 문자열으로 바꿉니다. 패턴을으로 바꾸는 작업은 Regular Expressions으로 수행되지만 여기서는 필요하지 않습니다.
사실 pathinfo가 조금 나아졌습니다. 그것은 당신이 기본 이름 및 제공 더 :
http://php.net/manual/en/function.pathinfo.php
<?php
$path_parts = pathinfo('/www/htdocs/index.html');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>
위 예제의 출력 :
/www/htdocs
index.html
html
index
user331071이 기본 이름 (OP에 언급되지 않은 것)보다 많은 정보를 얻고 자한다면,'pathinfo'가 더 좋을 수도 있습니다. (어쨌든이 컨텍스트에서 "더 나은"것은 무엇입니까?) 그러나 파일의 기본 이름 만 검색하려면 Gordon의 제안을 따르십시오. 한 줄의 코드만으로도 그것이 무엇인지 명확하게 알 수 있습니다. 당신의 제안은 여분의 코드 라인을 필요로하며 배열 조회 (훨씬 덜 표현적인 IMO)를 사용합니다. –
... 물론'pathinfo'가 존재한다는 것은 상처를주지 않습니다! :) –
basename()을 사용하면 basename과 확장자 데이터 만 얻을 수 있습니다. OP를 기반으로 basename() 함수를 사용하여 파일 이름을 추출하면 확장에 대한 임시 해결책이 생겼을 것입니다. pathinfo()도이를 제공합니다. 1 스톱 쇼핑. basename()은 그렇지 않습니다. – gurun8
음의 downvote? 무엇 때문에? – Gordon
확실히 "드라이브 바이 다운 유권자"*에게 익숙하십니까? :) –