【发布时间】:2014-03-11 18:13:58
【问题描述】:
当我将数字指定为正则表达式的一部分时,我有一段 PHP 代码停止工作。我确信他们不需要逃脱,但肯定有问题。
代码如下
$dir = new RecursiveDirectoryIterator($IMAGES_DIR);
$iter = new RecursiveIteratorIterator($dir);
$rx = new RegexIterator($iter, $IMG_MASK, RecursiveRegexIterator::GET_MATCH);
$images = array();
foreach ($rx as $r) {
$images[] = $r[0];
}
var_dump($images);
在与 PHP 文件相同的目录中有一个名为 images 的目录,布局如下:
images/
1.png
2.png
3.png
test/
4.png
5.png
6.png
在代码中,常量$IMAGES_DIR = 'images/'。
当$IMG_MASK = /^.+\.png$/ 一切正常时 - 转储包含所有 6 张图像。
当$IMG_MASK = /^[1-3]\.png$/ 或/^1\.png$/ 或/^\1\.png$/(我没想到最后一个会起作用,但试了一下)转储是一个空数组。
不过,在我反对的所有测试人员中,正则表达式似乎都匹配得很好。我错过了什么?
【问题讨论】:
-
您最终希望
$images数组中有哪些值?这些应该是文件名1.png, 6.png,还是路径./images/1.png, ./images/test/6.png? -
正确答案是up,所以我想没关系,但我希望
$images包含完整的相对路径。我想感谢您的评论 - 这不是答案,但我觉得即使迈克尔没有发布它,我也可能在回答您时想通了。 -
不客气——这既是我的评论,也是我的回答。我不得不假设你想要相对路径......
-
原来如此 - 看看你在和谁说话,我!