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

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


 ミワです。
 #何度もすいません。

On 2004/02/19, at 4:05, Eiji Miwa wrote:

>    $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 );

 古いのをペーストしてしまいました。
 正しくはこんな感じです。

   $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 メーリングリストの案内