zx.
zx.

Reputation: 249

Select file(s) in a directory based upon complex filename

I have audio files in var/

This is the file name

2-3109999999-3246758493-1271129518-1271129505.6.wav

Format
2=campaign id
3109999999=caller id
3246758493=number called
1271129518=timestamp call ended
1271129505=timestamp call started
6=call id

If I were to pass just the number called which was 3246758493, how can I find all the files without defining all the other variables(such as timestamp, etc) and just the files that have that number in the filename?

Upvotes: 0

Views: 327

Answers (2)

salathe
salathe

Reputation: 51950

You could also use a DirectoryIterator to scan the folder and a RegexIterator to filter the files based on a pattern.

$id = '3246758493';
$files = new RegexIterator(new DirectoryIterator('var/'), 
                           "#^\d-\d{10}-$id-\d{10}-\d{10}\.\d\.wav$#D");
foreach ($files as $fileinfo) {
    echo $fileinfo . PHP_EOL;
}

Upvotes: 1

SeanJA
SeanJA

Reputation: 10354

You would need to loop though the folder: http://php.net/manual/en/function.readdir.php

Then for each of the files in the folder, try and match it to the file that was requested using regex I guess?

http://www.txt2re.com/index-php.php3?s=2-3109999999-3246758493-1271129518-1271129505.6.wav&8

Upvotes: 1

Related Questions