[PHP-users 20423]Re: 再帰(?)正規表現置換について
Masayuki AOKI
info @ martin.bz
2004年 2月 18日 (水) 13:19:52 JST
こんにちはmartinです。あまりよく理解していないのですが,
$str1 = '<!--{def x}--><!--{def y}-->z<!--{/def y}--><!--{/def x}-->';
$str2 = '<!--{def x}--><!--{def y}-->"$z"<!--{/def y}--><!--{/def x}-->';
$str = preg_replace_callback(
'/<!--\{def\s+([A-Za-z][A-Za-z0-9_]*)\}-->(.*?)<!--\{\/def\s+\1\}-->/s',
create_function(
'$m',
'return "<?php if (@count($$m[1])) { ?>$m[2]<?php } ?>";'
),
preg_replace(
'/<!--\{def\s+([A-Za-z][A-Za-z0-9_]*)\}-->(.*?)<!--\{\/def\s+\1\}-->/s',
'<?php if (@count($\1)) { ?>\2<?php } ?>',
$str
)
);
echo $str;
とすると,$str1では
<?php if (@count($x)) { ?><?php if (@count($y)) { ?>z<?php } ?><?php } ?>
が返り,$str2では
<?php if (@count($x)) { ?><?php if (@count($y)) { ?>"$z"<?php } ?><?php } ?>
が返ってきます。これはお望みのものとは違うでしょうか? これ以上入れ子に
なるとダメですが。見当違いでしたらすみません。
あと,現時点で
http://www.ravi.ne.jp/~shige/?html_template
に繋がらないようです。覗いてみたいんですが。
/*
Masayuki AOKI: maoki @ bioreg.kyushu-u.ac.jp
HomePage: http://martin.bz
*/
PHP-users メーリングリストの案内