2

文字列の配列があり、各文字列には画像ファイルの名前が含まれています。

$slike=(1.jpg,253455.jpg,32.jpg,477.jpg);

新しい配列が次のようになります。

$slike=(1,253455,32,477);

この配列の各文字列からファイル拡張子を削除するにはどうすればよいですか?

4

4 に答える 4

7

ファイル名を使用している場合は、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
)
于 2012-11-17T23:19:37.367 に答える
2

正規表現はこれであなたの友達です。ブラッカーとは、配列を意味すると思います。

$k = count($slike);
for ($i = 0; $i < $k; $i++) {
   $extpos = strrpos($slike[$i],".");
   $slike[$i] = substr($slike[$i],0,$extpos);
}

これは正規表現に依存しなくなり、pathinfo()よりも高速にベンチマークされます。

于 2012-11-17T23:19:53.473 に答える
2

preg_splitでの使用foreach

foreach ($slike as &$value) {
    $split = preg_split('/\./', $value);
    $value = $split[0]
}

正規表現をに変更して、同様/[^.]+/に含めます。a.b.jpg

于 2012-11-17T23:20:18.037 に答える
-1

これを試してください:

$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>";
于 2017-04-24T08:52:30.257 に答える