如何匹配这些标签之间的文本?
<!-- |IFNOT:ARCHIVE_PAGE| -->
some text
<!-- |END:IF| -->
谢谢!
preg_replace("/<body>([\s\S]*.*)<\/body>/",$replace,$origional);
这将替换正文标签之间的全部内容。
这不是很推荐,但是
<!-- \|IFNOT:ARCHIVE_PAGE\| -->((\s|.)*?)<!-- \|END:IF\| -->
试试这个正则表达式:
(?<=<!-- \|IFNOT:ARCHIVE_PAGE\| -->)(\s|.)*?(?=<!-- \|END:IF\| -->)
使用 Perl,这里唯一的特殊字符是管道 '|'。因此,以下正则表达式将匹配(并由于捕获括号 (.+) 而返回)您正在查找的文本:
{<!-- \|IFNOT:ARCHIVE_PAGE\| -->\s*(.+)\s*<!-- \|END:IF\| -->}s
请注意,'s' 修饰符让正则表达式匹配多行,捕获括号前后的 \s* 意味着空格(包括换行符)将不包含在返回的匹配中。