- 论坛徽章:
- 0
|
define('START_DELIMITER', '<!--[[');
define('END_DELIMITER', ']]-->');
$startDelimiter = preg_quote(START_DELIMITER, '~');
$endDelimiter = preg_quote(END_DELIMITER, '~');
$startDelimiter = str_replace('-', '\-', $startDelimiter);
$endDelimiter = str_replace('-', '\-', $endDelimiter);
$tplText = '<!--[[if $a > $b && $a < $c || $e == $f ]]-->
sdfafasf
if endif {$arrtest}s
<!--[[if true ]]-->
if /if {$arrtes}
<!--[[/if]]-->
<!--[[endif]]-->';
$startDelimiter = preg_quote(START_DELIMITER, '-');
$endDelimiter = preg_quote(END_DELIMITER, '-');
//$startDelimiter
$tmpRegexp = $startDelimiter."([a-z]+)[\s]+(.+?)[\s]*".$endDelimiter
."(([^".$startDelimiter.$endDelimiter."]|(?R))*)"
.$startDelimiter.'(end\\1|\/\\1)'.$endDelimiter;
$replace = "<?php \\1 (\\2) { ?> \\3 <?php } ?>"; |
上面的代码是可以的,但是如果模板中的类似有包含定界符(多个字符组成的字符串)相同的某符号的话就会失效,有什么办法解决吗?
我的想法是不包含某个指定字符串(而不是^字符,这种只限定字符的正则)的正则?(表达有点乱,不知道有没有把人吓跑了? |
|