特定のファイルをプルするための特別なincludeステートメントのテキストを解析しようとしています。
私は次の機能を持っています:
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 parse_includes($text);
このエラーが発生します:
Warning: include(includes/sidebar.php] <br><br> [include:footer.php) [function.include]: failed to open stream:
が1つしかない場合は[include: *'
、期待どおりに機能します。
正規表現を変更するにはどうすればよいですか?HTMLまたは空白が両側の角かっこをどのように囲むことができるかに注意してください。