Извлечение корзины и имени ресурса из S3 URL (вопрос регулярного выражения) - PullRequest
1 голос
/ 10 мая 2011

Я получу вход, который будет ЛЮБОЙ из следующих.Мне нужно разработать регулярное выражение, которое может обрабатывать любые из них и извлечь validS3bucketname и validS3resourcename.

http://s3.amazonaws.com/validS3bucketname/validS3resourcename
https://s3.amazonaws.com/validS3bucketname/validS3resourcename
http://validS3bucketname.s3.amazonaws.com/validS3resourcename
https://validS3bucketname.s3.amazonaws.com/validS3resourcename

validS3bucketname и validS3resourcename являются значениями VALID S3, включая пробелы и что-либо еще - я понятия не имею, что S3 допускает какдопустимые имена файлов.

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

Может быть, они могут быть объединены.Воспринимайте это как вдохновение:

Первый случай:

^https?://s3\.amazonaws\.com\/([^/]+)/(.+)$

Второй случай:

^https?://([^/]+)\.s3\.amazonaws\.com\/(.+)$
1 голос
/ 11 мая 2011

Следующие параметры будут соответствовать обоим:

/:\/\/s3\.amazonaws.com\/([^\/]+)|:\/\/([^.]+)\.s3\.amazonaws\.com\//

эта простая функция должна красиво обернуться

function getS3Info($url) {
    if(! preg_match('/(?:\/\/s3\.amazonaws.com\/([^\/]+)|:\/\/([^.]+)\.s3\.amazonaws\.com)\/([^\/]+)/', $url, $a)) {
        return false;
    }

    $bucket = isset($a[2]) ? $a[2] : $a[1];
    $resource = $a[3];

    return array('bucket' => $bucket, 'resource' => $resource);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...