내가 문자열 배열을 가지고, 이미지 파일의 이름을 포함하는 각 문자열 :PHP 배열의 각 문자열에서 파일 확장자를 제거하려면 어떻게해야합니까?
$slike=(1.jpg,253455.jpg,32.jpg,477.jpg);
내가 원하는 새로운 배열은 다음과 같이합니다 : 나는 파일 확장자를 제거하는 방법
$slike=(1,253455,32,477);
을 이 배열의 각 문자열에서?
내가 문자열 배열을 가지고, 이미지 파일의 이름을 포함하는 각 문자열 :PHP 배열의 각 문자열에서 파일 확장자를 제거하려면 어떻게해야합니까?
$slike=(1.jpg,253455.jpg,32.jpg,477.jpg);
내가 원하는 새로운 배열은 다음과 같이합니다 : 나는 파일 확장자를 제거하는 방법
$slike=(1,253455,32,477);
을 이 배열의 각 문자열에서?
파일 이름을 사용하는 경우 PHP의 pathinfo() 기능을 사용하십시오. 이를 위해 정규 표현식을 사용할 필요가 없습니다.
<?php
# your array
$slike = array('1.jpg','253455.jpg','32.jpg','477.jpg');
# if you have PHP >= 5.3, I'd use this
$slike = array_map(function($e){
return pathinfo($e, PATHINFO_FILENAME);
}, $slike);
# if you have PHP <= 5.2, use this
$slike = array_map('pathinfo', $slike, array_fill(
0, count($slike), PATHINFO_FILENAME
));
# dump
print_r($slike);
출력
Array
(
[0] => 1
[1] => 253455
[2] => 32
[3] => 477
)
정규 표현식은이 일에 당신의 친구입니다. 나는 브라 커 (brackers)에 의해 배열을 의미한다고 가정합니다.
$k = count($slike);
for ($i = 0; $i < $k; $i++) {
$extpos = strrpos($slike[$i],".");
$slike[$i] = substr($slike[$i],0,$extpos);
}
더 이상 정규식에 의존하지 않으며 benchmarks는 pathinfo()보다 빠릅니다. preg_split
를 사용
예를 들어 매력은 좋아요, 대괄호는 배열 이었지만 편집기에서 코드를 만드는 데 어려움이 있습니다. –
-1이 문제의 정규식을 사용할 이유가 없습니다. 말할 것도없이, 당신의 솔루션은 매우 단단하고 모든 파일 이름이 완전한 숫자 일 것을 기대합니다. PHP는이 특정 유형의 문자열 분석을위한'pathinfo' 함수를 가지고 있습니다. 자세한 내용은 내 대답을 참조하십시오. –
사진이 숫자가 아닌 경우 어떻게됩니까? 1.jpg 대신에 me.jpg와 같은 것이 있다면, 이것이 잘못되는 것입니까? –
이 하나의 시도 :
$slike = array('1.jpg','253455.jpg','32.jpg','477.jpg');
$slike = array_map(function($e){
$e = explode('.', $e);
return $e[0];
}, $slike);
echo "<pre>";
print_r($slike);
echo "</pre>";
'my.new.picture.jpg'와 같은 파일 이름이 있으면 솔루션이 작동하지 않습니다. –
잘못된. basename()은 접미어 매개 변수에 확장이 제공되는 경우에만 확장을 제거합니다. OP가 연장을 미리 알면 작동 할 수 있습니다. –
내 대답은 더 이상'basename'에 달려 있지 않습니다. –
이것은 최선의 답변입니다, txanks –