首页 > 解决方案 > 使用正则表达式计算具有某些内容的 php 脚本

问题描述

我正在尝试在包含某些信息的混合 html/php 脚本中列出 php 块。例如文本是:

bla bla <?php echo("hello world") ?> <?php

echo($info["xx"])

?> bla and bla

bla bla <?php

echo($info["yy"])

?> bla bla and bla

我想列出包含“$info”文本的 php 块。预期结果必须是:

<?php

    echo($info["xx"])

    ?> 

<?php

    echo($info["yy"])

    ?>

我试过/<\?((.|\n)*)\?>/g了,但首先它不搜索 $info 并将所有字符串从 firs php 返回到最后一个 php 块。

标签: phpregex

解决方案


您可以使用

'/<\?php\s(?:(?!<\?php\s|\$info).)*?\$info.*?\?>/s'

查看正则表达式演示

  • <\?php\s-<?php和一个空格
  • (?:(?!<\?php\s|\$info).)*?- 任何不开始的字符,0 次或更多次<?php+ 空格或$info字符串
  • .*?- 任何 0+ 个字符,尽可能少
  • \?>- 一个?>子串。

推荐阅读