Preg_match字符串并将匹配项放入数组中

时间:2013-11-01 13:41:58

标签: php arrays input preg-match-all

我正在创建一个带有特定照片临时验证的照片共享系统。 基本上,在输入文件提交照片被加载到一个名为“temp”的目录。

我更改了特定字符串中的文件名,例如3_1383310890_1709373616.jpg 其中3是 user_id 1383310890是日期,1709373616是随机代码名称。

现在,如果用户没有完成表单...下次,它应检查是否存在该用户ID的文件临时值,我会得到这样的信息,但我不明白为什么它不起作用

$string = 'temp/3_1383310890_1709373616.jpg';

    preg_match_all('/^[0-9]+_/',$string,$match);

    $arr = array('user' => $match[1][0], 'date' => $match[2][0], 'photo' => $match[3][0]);
    echo json_encode($arr);

它返回空对象

{"user":null,"date":null,"photo":null}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

^ char。在这种情况下意味着从字符串的开头匹配。我会用:

$string = 'temp/3_1383310890_1709373616.jpg';
preg_match('/^temp\/([0-9]+)_([0-9]+)_([0-9]+)\.jpg$/',$string,$match);
$arr = array('user' => $match[0], 'date' => $match[1], 'photo' => $match[2]);
echo json_encode($arr);