使用正则表达式匹配php标签内的内容

时间:2009-09-10 14:43:24

标签: php regex tags pcre

我在匹配php标签内的内容时遇到了一些麻烦。

目前我有这段代码,但它对我不起作用:

<?php preg_match_all('/<\?php(.+)\?>/', $str, $inside_php); ?>

我需要检索内容,以便我可以用它们做其他事情,比如eval()。

2 个答案:

答案 0 :(得分:4)

停在那儿,你不想这样做!

您可以使用tokenizer extension of PHP将字符串分解为令牌,这将可靠地找到所有PHP源代码。然后你可以使用令牌进行任何你想要的转换。正则表达式不是这项工作的工具(你不想用勺子灭火,对吗?)

$tokens = token_get_all($string);
foreach ($tokens as $token) {
    if (is_array($token)) {
        if (!in_array($token[0], array(T_INLINE_HTML, T_OPEN_TAG, T_CLOSE_TAG))) {
            echo $token[1];
        }
    } else {
        echo $token;
    }
}

答案 1 :(得分:0)

句点(或点)与新行不匹配:

([.\n\r]+)

那样做^^

<?php preg_match_all('/<\?php([.\n\r]+)\?>/', $str, $inside_php); ?>