【发布时间】:2016-05-19 18:39:47
【问题描述】:
对不起,我的英语不好,但我想问一个问题。
我为我编写了一个 Templete 引擎。
现在我想让我可以编写 @include(public/server/logik01/logik_web_init.php) 并且类包含该文件并删除 @include(....) 标记。
这是我的代码
private static function get_include(){
preg_match_all('/@include.*/', self::$viewMainContent, $include);
foreach($include[0] as $include){
$key = explode("(", $include);
$key = explode(")", $key[1]);
$include = addcslashes($include, "/");
$include = '/'.$include.'/';
self::$viewMainContent = preg_replace($include, '', self::$viewMainContent);
require_once($key[0]);
}
}
在self::$viewMainContent 中是这个self::$viewMainContent = file_get_contents($viewMain); 源代码。
INclude 很好,但 @include(public/server/logik01/logik_web_init.php) 我不能用 preg_replace 覆盖
【问题讨论】:
-
@include\((?P<include>[^)]+)\)上的个人 id 匹配,但这只是我,regex101.com/r/iC9kJ9/1 为您节省大约 6 行代码。 -
感谢您的快速回答。我必须在哪个地方写这个
@include\((?P<include>[^)]+)\) -
回答您的问题,您可能需要在 preg 替换中添加
preg_quote($include)以避开那些讨厌的斜线和点。 -
原始的preg_match_all,然后你只需匹配并捕获你需要的,路径。
标签: php regex template-engine