我需要在PHP一个正则表达式对元件的标签之间的匹配内容,例如<body></body>与Perl兼容preg_match

到目前为止我试图与:

// $content is a string with html content

preg_match("/<body(.|\r\n)*\/body>/", $content, $matches);

print_r($matches);

...但打印输出是一个空数组。

有帮助吗?

解决方案

您只需添加s修饰符,这样的点匹配所有的字符,包括新行:

preg_match("/<body.*\/body>/s", $content, $matches);

如在doc说明: HTTP:// NL2。 php.net/manual/en/reference.pcre.pattern.modifiers.php

其他提示

默认一行perl的正则表达式匹配

您必须通过添加S或后米到指定你想要做的多线搜索最后/

例如:

$> perl -e 'print $1 if "bla\nbla\n<body>\nfirst line\n second line\n</body>\nbla" =~ /^.*<body>(.*)<\/body>.*$/s'

请参阅: http://www.perl.com/pub/a/ 2003/06/06 / regexps.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top