Symfony2 - Finder组件

时间:2016-01-20 16:24:47

标签: php symfony search symfony-components symfony-finder

我想在目录中的某些文件中找到特定文本。我尝试使用Symfony Finder组件,但无法获得结果。以下是我的代码。

$finder = new Finder();
$finder->in('./sample')->files()->contains('This is test');

文件位于示例目录中。示例目录中有pdf,txt文件。以上对我没有用。如何让这个工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

在此之前检查示例目录的路径是否在.php文件的同一目录中,这将起作用。

@Test
public void testDoubleHash() throws Exception {
    ConfigpathContext c = parse("#BU/proj##bla#d==u##bla");
    // line 1:15 mismatched input '==' expecting '='

    Assert.assertEquals( "#BU/proj##bla", c.toplevelement().getText() );
    Assert.assertEquals( "#d==u##bla", c.subprojectelement().get(0).getText() );
}

@Test
public void testJumps() throws Exception {
    ConfigpathContext c = parse("#BU/pro##dla#du##d==la#d=dest");
    // line 1:14 missing '=' at 'u'

    Assert.assertEquals( "#BU/pro##dla", c.toplevelement().getText() );
    Assert.assertEquals( 1, c.subprojectelement().size());
    Assert.assertEquals( "#du##d==la", c.subprojectelement().get(0).path().getText() );
    Assert.assertEquals( "dest", c.subprojectelement().get(0).jump().jumpdestination().getText() );
}


private ConfigpathContext parse(String src) {
    ConfigPathParser parser = new ConfigPathParser(new CommonTokenStream(new ConfigPathLexer(new ANTLRInputStream(src))));
    parser.addErrorListener(new BaseErrorListener() {
        @Override
        public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) {
            throw new RuntimeException("line " + line + ":" + charPositionInLine + " " + msg );
        }
    });
    return parser.configpath();
}

DIR 是包含文件目录的php的魔术常量。