[PHP-users 20444] Re: 再帰(?)正規表現置換について

Eiji Miwa miwa @ offside.ne.jp
2004年 2月 19日 (木) 04:05:51 JST


 ミワです。
 #悔しいのでリベンジ。

On 2004/02/19, at 1:05, Eiji Miwa wrote:
>
>  すいません。複雑になるとうまくいかないみたいです。
>  (((?>.+?)|(?R))*?) の .+? の部分を、もっとちゃんと書かないと
>  駄目みたいですね。

   $nest = 1;
   $pattern = array_fill ( 0, $nest,
     '/<!--{(def\s+([A-Za-z][A-Za-z0-9_]*))}-->'.
     '(((?>(?:(?!\/?\1).)+?)|(?R))*?)'.
     '<!--{\/def\s+\2}-->/s' );
   $replacement = array_fill ( 0, $nest,
     '<?php if (@count($\2)) { ?>\3<?php } ?>' );
   $result = preg_replace ( $pattern, $replacement, $str );

 まだまだ問題点はいっぱいありますが、
 これなら、割とまともに動きそうです。
--
 miwa at offside.ne.jp



PHP-users メーリングリストの案内