正则表达式一直返回null

时间:2018-04-24 22:51:57

标签: php regex

我正在尝试使用正则表达式解析字符串。我得到的结果是一个没有内容的多维数组。它返回正确数量的子数组,但没有结果。下面是PHP结果,正则表达式代码和传入的字符串。有人可以显示结果为null的原因吗?这是一个示例,表明它不起作用http://sandbox.onlinephpfunctions.com/code/d9dead4e23b5784a9a5ba7a098a958edb7113f62

我得到的结果

Array ( [0] => Array ( ) [1] => Array ( ) )

正则表达式代码

$content = $fetcher->fetchFile($directory.'/'.$fileName);
        preg_match_all('/\[@style\](.*?)\[@end\]/s', $content, $matches);
        print_r($matches);

正在解析的字符串

ul.nav > li > a {
  padding: 0 10px; }
/**
 *  @style
 */
button {
  background: blue !important; }
/*  @end */
/**
 *  @style
 */
span {
  background: blue !important;
  display: block;
  height: 20px;
  width: 20px; }
/* @end */

1 个答案:

答案 0 :(得分:1)

您可以尝试使用:

preg_match_all("/\/\*\*\s*\*\s*\@style\s*\*\/(.*?)\/\*\s*\@end\s*\*\//s", $input, $matches, PREG_PATTERN_ORDER);
print_r($matches[0]);

这将输出:

Array
(
    [0] => /**
 *  @style
 */
button {
  background: blue !important; }
/*  @end */
    [1] => /**
 *  @style
 */
span {
  background: blue !important;
  display: block;
  height: 20px;
  width: 20px; }
/* @end */
)