我想将/<?phps([sS]*?)?>/gi
更改为排除单行PHP标记的方式。
例如,这里我只想匹配第二个PHP标签,而不是第一个:
Test number <?PHP echo($a);?> is here.
This is test number <?PHP echo($b);
$b = $a?> that expanded across multiple lines.
您可以使用
<?php(?!S)((?:(?!<?php(?!S)|?>).)*R[sS]*?)?>
多线.
:的一种变体
<?phps((?:(?!<?phps|?>).)*R(?s:.*?))?>
请参阅regex演示详细信息:
<?php
-一个<?php
子串(?!S)
-右边的空白边界(右边必须有空白或字符串开头(((?:(?!<?php(?!S)|?>).)*R[sS]*?)
-第1组:(?:(?!<?php(?!S)|?>).)*
-除了换行符字符之外的任何一个字符,零次或更多次,并且尽可能多地出现,都不会启动<?php + a right-hand whitespace boundary or
>`char序列R
—断线序列[sS]*?
/(?s:.*?)
-任何零个或多个尽可能少的字符
?>
-一个?>
子串