我有一个字符串数组,每个字符串都包含一个图像文件的名称:
$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>";