Regexp:在具体字符串中查找字符

时间:2017-11-05 17:47:14

标签: regex

我有这样的事情:

   public function selector($selected = null, $name = 'type_id', array $default = null)
    {
        return view('@admin/defaul/tSelector' <-- slashes from this string , [
            'name' => $name,
            'id' => $name,
            'defaultValue' => $default,
        ]);
        someFunc('@someText/defaul/tSelector');

        //'some/text/'
        //comment with 'some/path/'
        'a/b'

        view('@aaa/bbb/ccc/ddddddd <-- slashes from this string
dddddddd/eee/ffff'); <-- slashes from this string

    }

我想在具体的字符串中找到所有斜杠 - 在view()函数中使用 only 。这意味着,其他斜线不需要。

我这样做,但它会归还所有的sla ..

例如,我需要名称为'view'名称的函数的斜杠: view('@admin/defaul/tSelector',view('@aaa/bbb/ccc/ddddddddddddddd/eee/ffff');

https://regex101.com/r/xXNuIj/2

1 个答案:

答案 0 :(得分:0)

此正则表达式将查找视图函数调用并返回具有第一个参数字符串值的子组:

/view\(\s*'([^']*)'/

您可以使用preg_match_all匹配字符串中的所有匹配项,然后根据需要对字符串进行操作。 (例如,用斜杠拆分。)

<?php

$data = "public function selector(\$selected = null, \$name = 'type_id', array \$default = null)".
    "{".
        "return view('@admin/defaul/tSelector' , [".
        "    'name' => \$name,".
        "    'id' => \$name,".
        "    'defaultValue' => \$default,".
        "]);".
        "someFunc('@someText/defaul/tSelector');".

        "//'some/text/'".
        "//comment with 'some/path/'".
        "'a/b'".

        "view('@aaa/bbb/ccc/ddddddddddddddd/eee/ffff');".
    "}";

if(preg_match_all("/view\(\s*'([^']*)'/", $data, $matches)){
    foreach($matches[1] as $view){
        var_dump(explode("/", $view));
        echo('<br>');
    }
}

?>