私はこの正規表現を持っています:
'/^files\/(.+\..+)$/';
しかし、「files/」セクションをランタイム変数に置き換えたいと思います。
私はこれを試しました:
$filePath = "files/";
'/^'.$filePath.'(.+\..+)$/';
これと同様に機能しませんでした:
$filePath = preg_quote("files/");
'/^'.$filePath.'(.+\..+)$/';
しかし、preg_match 行のこのループでエラーが発生し、"(" は不明な修飾子であるというメッセージが表示されます。
foreach (glob(FILE_PATH."*.*") as $filename) {
preg_match($pattern, $filename, $matches);
echo "<option class='file' value='".$matches[1]."'>".$matches[1]."</option>";
}
どんな助けでも感謝します、ありがとう。
編集
これは機能します...
$filePath = 'files\/';
...しかし、実際の使用では、別のファイルで宣言された定数を使用しようとしています。
そう:
define('FILE_PATH', 'files/');
...そして、その定数を使用しようとしています。アプリケーションの他の部分がエスケープ文字なしでそれを必要とするため、エスケープ文字を埋め込むことはできません。