首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文件名上使用PHP的REGEX

在文件名上使用PHP的REGEX
EN

Stack Overflow用户
提问于 2011-03-07 19:23:23
回答 4查看 191关注 0票数 0

我打算从一个文件名中提取排序代码和账号,假设前6个数字代表排序代码,后8个数字代表账号。文件名的示例如下:

代码语言:javascript
复制
./uploads/Santander/Statement_01020387654321.qif

我所写的似乎不起作用,因为我是新的正则表达式,也许有人可以解释这应该如何做,或者我哪里出了错。

代码语言:javascript
复制
$sort = '';
$acno = '';

$ret = preg_match('/Statment_[0-9]{14}\.(csv|qif|qfx|ofx)$/', $file);

if ($ret)
{       
    if (ereg ('/_[0-9]{14}\./', $file, $regs))
    {
        $reg = $regs[count($regs)-1];
        $sort = substr($reg, 1, 6);
        $acno = substr($reg, 7, 8);
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-07 19:37:02

已测试

代码语言:javascript
复制
echo $file ='./uploads/Santander/Statement_01020387654321.qif';

$ret = preg_match('/Statement_(\d{6})(\d{8})\.(csv|qif|qfx|ofx)$/', $file, $matches);

echo "<pre>";
print_r($matches);

returns

Array
(
    [0] => Statement_01020387654321.qif
    [1] => 010203
    [2] => 87654321
    [3] => qif
)
票数 0
EN

Stack Overflow用户

发布于 2011-03-07 19:27:57

我相信精通正则表达式的人可以帮助你,但也有可能没有。从长远来看,它可能是更有吸引力的选择,因为它更容易维护。

代码语言:javascript
复制
$path = "./uploads/Santander/Statement_01020387654321.qif"

$filename = pathinfo($path, PATHINFO_BASENAME); // "Statement_01020387654321.qif"

$temp_array = explode("_", $filename);

$sortcode = substr($temp_array[1], 0, 6); // 010203
$account = substr($temp_array[1], 6, 8);  // 7654321
票数 1
EN

Stack Overflow用户

发布于 2011-03-07 19:29:26

在匹配的第一步中这样做:

代码语言:javascript
复制
$ret = preg_match('/Statement_([0-9]{6})([0-9]{8})\.(csv|qif|qfx|ofx)$/', $file, $matches);

$matches中,你有关于分拣号、账号和分机的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5219064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档