我想用正则表达式提取本节的整个 PHP 代码:
<h1>Extract the PHP Code</h1>
<?php
echo(date("F j, Y, g:i a") . ' and a stumbling block: ?>');
/* Another stumbling block ?> */
echo(' that works.');
?>
<p>Some HTML text ...</p>
不幸的是,我的正则表达式遇到了绊脚石:
/<[?]php[^?>]*[?]>/gim
有人提示如何捕获完整的 PHP 代码吗?
像这样的东西可能会起作用
/<\?php.+?\?>$/ms
该模式使用两个flags http://php.net/manual/en/reference.pcre.pattern.modifiers.php
-
m
for PCRE_MULTILINE
默认情况下,PCRE 将主题字符串视为由单个“行”字符组成(即使它实际上包含多个换行符)。 “行首”元字符 (^
) 仅在字符串的开头匹配,而“行尾”元字符 ($
) 仅在字符串末尾或终止换行符之前匹配(除非D修改器已设置)。这与 Perl 相同。设置此修饰符后,“行起始”和“行结束”结构分别与主题字符串中任何换行符之后或之前以及最开始和结束处匹配。这相当于 Perl 的/m
修饰符。如果没有"\n"
主题字符串中的字符,或没有出现^
or $
在模式中,设置此修饰符没有任何效果。
-
s
for PCRE_DOTALL
如果设置了此修饰符,则模式中的点元字符将匹配所有字符,包括换行符。如果没有它,换行符将被排除。这个修饰符相当于 Perl 的/s
修饰符。负类如[^a]
始终匹配换行符,与此修饰符的设置无关。
这是几场比赛的样子
Caveat如果找不到则不起作用?>
在一行的末尾。
所以它适用于以下情况
但这不起作用
<?php
echo "actual code";
/*
* comment ?>
*/
?>
简而言之,如果您的代码那么混乱,那么您需要更好的解决方案。如果你的代码是干净的,它应该可以正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)