今天我的目标是检索
与其命名空间名称相关联的所有PHP类名称,但我遇到了困难.这是我的一个例子:
$content =<<<END
<?php
namespace test;
class a { }
class b { }
namespace foo;
class bar { }
?>
END;
preg_match_all('~^\s*((?:namespace)\s+(\w+);)?\s*(?:abstract\s+|final\s+)?(?:class|interface)\s+(\w+)~mi', $content, $classes);
var_dump($classes);
Run Code Online (Sandbox Code Playgroud)
该表达式只有在命名空间中最多只有一个类时才有效,但我无法弄清楚如何根据命名空间使其匹配所有类.
您可以尝试以下模式:
((?:\\{1,2}\w+|\w+\\{1,2})(?:\w+\\{0,2})+)
出于某种原因,我不得不同时匹配Namespace\Class和Namespace\\Class.但是你必须更换 {1,2},并{0,2}分别进行任何操作,?
在线测试:https://regex101.com/r/fE2kU9/3
| 归档时间: |
|
| 查看次数: |
2457 次 |
| 最近记录: |