2012-03-11 5 views
3

私はAmazon S3 SDK for PHPを使用していて、動的なパス内のサブディレクトリを検索する正規表現を作成しようとしています。 Amazon S3には典型的なファイルシステムのような「サブディレクトリ」はありませんが、私の理解からget_object_listメソッドでは、S3のオブジェクト内の文字列を検索するpcreオプションが使用できます。 pcreオプションを使用すると、パス内にサブディレクトリを見つけることができます。Amazon S3 SDK for PHPでget_object_listメソッドでPCRE正規表現パターンを書く方法

たとえば、

$find_directory = "foo"; 
$reg_ex = "/([a-zA-Z0-9_]*)/"; 

$response = $s3->get_object_list(MY_BUCKET, array(
     'pcre' => some/path/" . $reg_ex . "/" . $find_directory . "/", 
     'max-keys' => 1 
)); 

if ((count($response)) > 0){echo "yes it exists";}else{echo "no it does not exist";} 

私はそれが持っている任意のディレクトリパスを見つけるだろうと期待する:

some/path/(any directory with letters, numbers, or underscores)/foo 

しかし、この正規表現は動作していない、または私はPCREをフォーマットしています方法が正しくありません。

私は警告を取得しています:

するpreg_match()[function.pregマッチ]:デリミタは/ array.class.php上SDK-1.5.2 /ユーティリティに英数字 またはバックスラッシュであってはなりませんline 114

この正規表現をpcreに書き込む正しい方法は何ですか?

答えて

2

some/path"に二重引用符を入れていません。

結果に見つからない区切り文字も使用する必要があります。 /#などに変更してください。私は他のアイデアは持っていません。

+0

あなたの答えをありがとう。二重引用符はそこにあるはずですが、それを置いても結果の警告は変わりません。 – Jason

+0

'$ reg_ex'でデリミタを変更するのはどうですか?私は '/'がregのパターンではなく、全体の応答であることを認識しました。 '[a-zA-Z0-9_]'を '[\ w]'に変更することもできますが、エラーメッセージには影響しません。 –

+0

私はこの問題を発見したと思う。私が/から\ /をエスケープして、最初と最後を追加すると、それが動作するように見えます。私はこれをテストし続けます。 – Jason