我有这个正则表达式:
'/^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/');
尝试使用该常量时,不能嵌入转义字符,因为应用程序的其他部分需要它而没有转义字符。
$filePath
是否包含斜杠 (/
)?这会与您使用的正则表达式定界符冲突。您应该始终对注入表达式的内容进行正则表达式转义。 - arkaschapreg_quote
的作用)。他只是缺少一个参数 ;) - Martin Ender