PHP preg_grep不工作?

PHP preg_grep不工作?,php,regex,Php,Regex,这在这里起作用了……我在1-9号找到了一个匹配:对我来说很好 但是我在regexp周围使用了“#”作为分隔符,因为您的regexp包含“/”, 您可能只需要转义“/”或选择更好的分隔符您必须在$matchingFileNames之前定义$filenamemachregex。这可能与如何在php中转义字符(或不转义字符)有关。它工作的示例是javascript而不是php。或者@nickb说了什么。或者两者都有。抱歉,nickb…这不是代码顺序,这只是值。@nathanhayfield:我不是在

这在这里起作用了……我在1-9号找到了一个匹配:

对我来说很好

但是我在regexp周围使用了“#”作为分隔符,因为您的regexp包含“/”,
您可能只需要转义“/”或选择更好的分隔符

您必须在
$matchingFileNames
之前定义
$filenamemachregex
。这可能与如何在php中转义字符(或不转义字符)有关。它工作的示例是javascript而不是php。或者@nickb说了什么。或者两者都有。抱歉,nickb…这不是代码顺序,这只是值。@nathanhayfield:我不是在php中转义字符…正则表达式来自文件。我从一个文件中获取它,然后在一个参数中使用它$fileNameMatchRegex=$data[“filenameregex”];在实际正则表达式中转义分隔符字符(换句话说,使用
\/
),看看它是否与php中的转义有关。在本例中,分隔符…谢谢,这就是答案。:-)
$fileNameMatchRegex = ^a-[0-9]*_b-[0-9]*_c-.*(_d-on)?_((19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01]))-[0-9]*\.csv$

$fileNames = 

Array  
(
    [0] => index.html
    [1] => a-34234234_b-3271_c-123_d-on_2013-08-12-10.csv
    [2] => a-52342345_b-3271_c-123_d-on_2013-08-12-11.csv
    [3] => a-8764453_b-3271_c-123_d-on_2013-08-12-12.csv
    [4] => a-7654334_b-3271_c-1234_d-on_2013-08-12-4.csv
    [5] => a-3435_b-3271_c-23re_d-on_2013-08-12-5.csv
    [6] => a-909876_b-3271_c-wef2r2_d-on_2013-08-12-6.csv
    [7] => a-345456_b-3271_c-23rwef_d-on_2013-08-12-7.csv
    [8] => a-98765_b-3271_c-23ref_d-on_2013-08-12-8.csv
    [9] => a-098765_b-3271_c-wef2r_d-on_2013-08-12-9.csv
)

$matchingFileNames  = preg_grep ("/".$fileNameMatchRegex."/", $fileNames);
    $fileNames = explode(',', "index.html,a-34234234_b-3271_c-123_d-on_2013-08-12-10.csv,a-52342345_b-3271_c-123_d-on_2013-08-12-11.csv,a-8764453_b-3271_c-123_d-on_2013-08-12-12.csv,a-7654334_b-3271_c-1234_d-on_2013-08-12-4.csv,a-3435_b-3271_c-23re_d-on_2013-08-12-5.csv,a-909876_b-3271_c-wef2r2_d-on_2013-08-12-6.csv,a-345456_b-3271_c-23rwef_d-on_2013-08-12-7.csv,a-98765_b-3271_c-23ref_d-on_2013-08-12-8.csv,a-098765_b-3271_c-wef2r_d-on_2013-08-12-9.csv");
    $fileNameMatchRegex = '^a-[0-9]*_b-[0-9]*_c-.*(_d-on)?_((19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01]))-[0-9]*\.csv$';
    $matchingFileNames  = preg_grep ("#".$fileNameMatchRegex."#", $fileNames);

    print_r($fileNames);
    print_r($matchingFileNames);