php预匹配与内联匹配

php预匹配与内联匹配,php,regex,preg-match,Php,Regex,Preg Match,如何只匹配精确的内联代码,并将两个if匹配两次,而不是作为一个匹配 我希望通过以下方式获得结果: 排列( [0]=>asd [1] =>asd ) 不是 排列( [0]=>asdasd )--使用以下表达式: <!--\s+IF\s+([^\s]*)\s-->([^<]*)<!--\sENDIF\s--> ([^([^(.*)/gixsm) 结束编辑asd怎么办?对不起,你的问题很不完整,我不知道你在问什么,所以我想我给出了一个不完整的答案。我不知道你的if“

如何只匹配精确的内联代码,并将两个if匹配两次,而不是作为一个匹配

我希望通过以下方式获得结果:

排列( [0]=>asd [1] =>asd )

不是

排列( [0]=>asdasd )

--使用以下表达式:

<!--\s+IF\s+([^\s]*)\s-->([^<]*)<!--\sENDIF\s-->
([^([^(.*)/gixsm)

结束编辑

asd怎么办?对不起,你的问题很不完整,我不知道你在问什么,所以我想我给出了一个不完整的答案。我不知道你的if“声明”中会出现什么,因为我不知道语法。我会再试一次!嗨,很抱歉我忘了提到这个语法,它非常嵌套。谢谢你提供了完美的代码!:)您好,很抱歉再次问这个问题,但是关于这个问题呢:?标记内的标记。如果您试图嵌套“If”逻辑,您必须找到或定义某种方法使ifs和endifs看起来彼此不同,或者您必须使用某种类型的实际解析器。完整的解决方案远远超出了此注释的范围,但是不同如果标签的开头和结尾都有类似于
asdf ghjkl
的ID,那么你可以通过匹配开头和结尾标签来分别解析它们。另外,请参阅我对你的问题的评论。如果你粘贴示例代码和表达式,这将有助于本网站的未来用户ns您已尝试回答上述问题。使用回勾字符(在
~
键上)引用文本或代码,或将代码缩进四个或更多空格,以将其与文本的其余部分隔开
/<!--\s+IF\s+(.*?)\s-->([^<]*)<!--\sENDIF\s-->/gixsm
/<!--\s+IF\s+(.*?)\s-->(.*?)<!--\sENDIF\s-->/gixsm