[PHP-users 1758] 開始タグと終了タグの処理について
Osamu Shigematsu
php-users@php.gr.jp
Mon, 03 Sep 2001 17:25:41 +0900
重松です。
FastTemplate の改造をしています。
dynamic block の開始/終了をもっと柔軟に行いたいと考えています。
mbereg_search() を使って、開始タグと終了タグを検索していこうと思いました。
まだこれらになれていないため、以下のような簡単なテストコードを書きました。
<?php
header("content-type: text/plain");
$tag = '
<!-- NAME: dynamic.tpl -->
<table>
<!-- BEGIN DYNAMIC BLOCK: row -->
<tr>
<td>{NUMBER}</td>
<td>{BIG_NUMBER}</td>
</tr>
<!-- END DYNAMIC BLOCK: row -->
</table>
<!-- END: dynamic.tpl -->
';
$new_parent = "";
$macro = "row";
$re = "<!--\s*(BEGIN|END)\s+DYNAMIC\s+BLOCK\s*:\s*$macro\s*-->";
print $re . "\n";
if(mbereg_search_init($tag,$re,'i')){
mbereg_search();
$pos = mbereg_search_pos();
print_r($pos);
$regs = mbereg_search_getregs();
print_r($regs);
}else{
print("mbereg_search_init() failure!");
}
?>
実行結果は、
<!--\s*(BEGIN|END)\s+DYNAMIC\s+BLOCK\s*:\s*row\s*-->
Array
(
[0] => 121
[1] => 31
)
Array
(
[0] => <!-- END DYNAMIC BLOCK: row -->
[1] => END
)
となるのですが、最初の <!-- BEGIN DYNAMIC BLOCK: row --> の部分にマッチする
ことを期待しているのですが、マッチしません。
どうしてでしょうか。
環境は、
VineLinux 2.1.5 ftp
PHP 4.0.6 + mbereg の拡張
Apache 1.3.20
です。
アドバイスよろしくお願いいたします。
<独り言>
FastTemplate ってよく見ると、file() で各行毎の配列で持ってきてるくせして、そ
のあと、implode() でくっつけて、explode() ではなくて、split("\n", $foo) とし
てまた行毎に区切り直していて、無駄の極みです。ホント、Fast なのかな?
</独り言>
--
Osamu Shigematsu
http://www.ravi.ne.jp/
mailto:shige@ravi.ne.jp