【发布时间】:2009-09-10 14:43:24
【问题描述】:
我在匹配 php 标签中的内容时遇到了一些问题。
目前我有这个代码,但它不适合我:
<?php preg_match_all('/<\?php(.+)\?>/', $str, $inside_php); ?>
我需要检索内容,以便对它们执行其他操作,例如 eval()。
【问题讨论】:
我在匹配 php 标签中的内容时遇到了一些问题。
目前我有这个代码,但它不适合我:
<?php preg_match_all('/<\?php(.+)\?>/', $str, $inside_php); ?>
我需要检索内容,以便对它们执行其他操作,例如 eval()。
【问题讨论】:
停在那里,你不想这样!
您可以使用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;
}
}
【讨论】:
句点(或点)与新行不匹配:
([.\n\r]+)
这样做^^
<?php preg_match_all('/<\?php([.\n\r]+)\?>/', $str, $inside_php); ?>
【讨论】: