0
我想解析文本的特殊包含語句拉特定的文件。如何獲得多個匹配正則表達式
我有以下功能:
function parse_includes($text, $directory = 'includes/') {
preg_match_all('/\[include:([^,]+)\]/', $text, $matches);
foreach($matches[1] as $key => $filename) {
ob_start();
include($directory.$filename);
$include = ob_get_contents();
ob_end_clean();
$text = str_replace($matches[0][$key], $include, $text);
}
return $text;
}
在傳遞這個變量:
$text = 'Below is the footer<br><br>[include:sidebar.php] <br><br> [include:footer.php]<br>';
而且echo'ing它:
echo parse_includes($text);
我得到這個錯誤:
Warning: include(includes/sidebar.php] <br><br> [include:footer.php) [function.include]: failed to open stream:
如果只有一個[include: *'
,它按預期工作。
我該如何修改我的REGEX?請注意,HTML或空白區域可以圍繞兩側的括號。
您應該限制文件名模式'[^,] +'more。要麼使它不那麼貪婪,要麼不允許你在'''偶然發現的那個角色。 – mario
你能給我舉個例子嗎? – AVProgrammer