如何捕获并提交以下文件名
输入:
../images/imgac00000001.jpg
../images/imgbc00000002.jpg
../images/img1111.jpg
Outout:
imgac00000001
imgbc00000002
我在PHP中尝试过使用preg_replace,我不知道如何正确使用它。
preg_replace('/(img)[a-z]{0,2}[0-9]*/i', '$1', $img_path);
由于
答案 0 :(得分:3)
获取文件名的简便方法:
$file_info = pathinfo('../images/imgac00000001.jpg');
print $file_info['filename'];
答案 1 :(得分:1)
您需要使用preg_match_all
,而不是preg_replace
$input = <<<EOF
../images/imgac00000001.jpg
../images/imgbc00000002.jpg
../images/img1111.jpg
EOF;
//imgac00000001
//imgbc00000002
preg_match_all('/img[a-z]{0,2}[0-9]*/i', $input, $matches);
print_r($matches);
输出:
Array
(
[0] => Array
(
[0] => imgac00000001
[1] => imgbc00000002
[2] => img1111
)
)
答案 2 :(得分:0)
如果基本路径相同,为什么不使用str_replace?
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
$image = "../images/imgac00000001.jpg";
$name = str_replace(array('../images/','.jpg','.png'),'',$image);
您可以将str_ireplace()
用于不区分大小写的情况。
答案 3 :(得分:0)
尝试preg_replace('/((img)[a-z]{0,2}[0-9]*)/i', '$1', $img_path);
在整个表达式周围添加额外的括号。
答案 4 :(得分:0)
你不需要正则表达式,你可以做一些事情:
$str = '../images/imgac00000001.jpg';
$str = array_shift(explode('.', end(explode('/', $str))));
但这是你的正则表达式:
$str = '../images/imgac00000001.jpg';
preg_match('/\/([^\/\.]+)\./', $str, $matches);