PHP正則解析多重ループテンプレート例

1850 ワード

本例ではPHP正則解析多重ループテンプレートについて述べる.皆さんの参考にしてください.具体的には以下の通りです.

$str = "    ,        :(crm{  2:    } (crm{  3:    }crm)  crm)  (crm{  1:    }crm)";
$start = '(crm'; //      
$end  = 'crm)'; //         
//    ,       ,          '\'
$need_escape = array('^', '$', '(', ')', '.', '[', ']', '|', '*', '?', '+', '/', '{', '}');
foreach($need_escape as $val)
{
   if(strpos($start, $val) !== FALSE)//         
   { 
     $escape = '\\'.$val;
     $start = str_replace($val, $escape, $start);
   }
   if(strpos($end, $val) !== FALSE)//         
   { 
     $escape = '\\'.$val;
     $end = str_replace($val, $escape, $end);
   }
}
/*----------------------------------
*      【     】 【  】
* 【     】:         
* 【  】:       (    、    )
* ---------------------------------*/
//$pattern = '/\(crm((?!\(crm).)+crm\)/U';
$pattern = '/'.$start.'((?!'.$start.').)+'.$end.'/U';
preg_match_all($pattern, $str, $matches);
echo "
";
print_r($matches);
echo "
";
:
Array([0]=>Array([0]=>(crm{プロジェクト3:プロジェクト }crm)[1]=>(crm{プロジェクト1:プロジェクト }crm)[1]=>Array([0]=>}[1]=>})
PS:ここでは、 に な ツールを2つ します.
JavaScript オンラインテストツール:http://tools.jb51.net/regex/javascript
オンライン ツール:http://tools.jb51.net/regex/create_reg
PHPに する について のある は、「php 」、「phpプログラム 」、「php フィルタ 」、「PHP (Array) 」、「PHP 」、「php (string) 」および「php+mysqlデータベース 」を してください.
ここで べたことが さんのPHPプログラム に つことを っています.