2013-11-01 2 views
0

Я создаю систему обмена фотографиями с определенной фотографией temp verify. В принципе, на входной файл отправить фотографии загружаются в директорию с именем «temp».Preg_match string и помещает совпадения в массив

изменить имя файла в конкретной строке, как этот 3_1383310890_1709373616.jpg где 3 является в user_id 1383310890 является датой и 1709373616 является случайным именем кода.

Теперь, если пользователь не заполнил форму ... в следующий раз, он должен проверить, существует ли файл temp для этого идентификатора пользователя, и я получаю информацию подобным образом, но я не понимаю, почему это не так Работа.

$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

Вы пробовали 'var_dump ($ match)'? Что там? – andrewsi

+0

Я думаю, что настоящая проблема в preg_match_all, что вы думаете об этом? –

+1

Что вы пытаетесь совместить с этим регулярным выражением? Вы в настоящее время ищете «начало строки, за которой следует одна или несколько цифр, а затем символ подчеркивания». Началом строки является «temp», которая не соответствует «одной или нескольким цифрам». –

ответ

0

The^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); 
Смежные вопросы