私は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に書き込む正しい方法は何ですか?
あなたの答えをありがとう。二重引用符はそこにあるはずですが、それを置いても結果の警告は変わりません。 – Jason
'$ reg_ex'でデリミタを変更するのはどうですか?私は '/'がregのパターンではなく、全体の応答であることを認識しました。 '[a-zA-Z0-9_]'を '[\ w]'に変更することもできますが、エラーメッセージには影響しません。 –
私はこの問題を発見したと思う。私が/から\ /をエスケープして、最初と最後を追加すると、それが動作するように見えます。私はこれをテストし続けます。 – Jason