我要解析這個模板文件($ HTML):PHP - 解析模板變量與正則表達式
{$myFirstVariable}
{$myMainVar:MYF1,"x\:x\,x",2:MYF2:MYF3,false}
{$myLastVariable:trim}
之後,我的PHP解析器:
$regexp = '#{\$(?<name>.+?)(\:(?<modifiers>.+?))?}#';
preg_replace_callback($regexp, 'separateVariable', $html);
function separateVariable($matches) {
$varname = $matches['name'];
print $varname."\n";
if (isset($matches['modifiers'])) {
$modifiers = $matches['modifiers'];
$modifiers = preg_split('#(?<!\\\):#', $modifiers);
$parsed = array();
foreach ($modifiers as $modifier) {
$modifier = preg_split('#(?<!\\\),#', $modifier);
$parsed[array_shift($modifier)] = $modifier;
}
// parsed[myFuncName] = Array(2ndArg, 3rdArg)
print_r($parsed);
}
print "\n";
}
所有工作,除了我逃脫':'和','在{$ myMainVar:...}中用'\'表示。
你有任何解決方案來解放我'\'?
謝謝。
正則表達式是不是解析語言。放開這樣一個想法,即可以通過一個精心製作的正則表達式來實現這一點,而該正則表達式目前正在逃脫你。這是不可能的。編寫一個實際的解析器。 – Tomalak 2010-09-05 13:43:23
另請參閱http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2010-09-05 18:22:22
@therefromhere:這個問題不是解析HTML。 – Gumbo 2010-09-06 10:19:46