文字列の配列があり、各文字列には画像ファイルの名前が含まれています。
$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
)
正規表現はこれであなたの友達です。ブラッカーとは、配列を意味すると思います。
$k = count($slike);
for ($i = 0; $i < $k; $i++) {
$extpos = strrpos($slike[$i],".");
$slike[$i] = substr($slike[$i],0,$extpos);
}
これは正規表現に依存しなくなり、pathinfo()よりも高速にベンチマークされます。
foreach ($slike as &$value) {
$split = preg_split('/\./', $value);
$value = $split[0]
}
正規表現をに変更して、同様/[^.]+/
に含めます。a.b.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>";