我有一个看起来像这样的评论栏;
/**
* variable1: value
* variable2: value
*/
或者像这样;
/*
variable1: value
variable2: value
*/
我需要的是能够匹配任意数量的变量/值对并将它们添加到数组中。我似乎无法解决这个问题,但我一直在配错。
所有变量都是单行的,因此应该简化一些事情。应忽略“变量”之前或冒号之后的空格,但应保留值行中的任何其他空格。
更新:
我最终得到的是所选答案的轻微扩展;
/(\w)*\s*:\s*([\w'"\/.: ]*)/
它允许将URL用作像这样的值;
/**
* url: 'some/file.png'
* url: "http://www.google.ca/intl/en_ca/images/logo.gif"
*/
答案 0 :(得分:1)
这不起作用吗? (假设启用了多行匹配)
(\w)*\s*:\s*(\w*)
我假设您使用类似
之类的内容删除了注释区块\/\*.*?\*\/
将.
设置为匹配任何内容。
答案 1 :(得分:0)
你可以试试这个:
$str=<<<A
/**
* variable1: value
* variable2: value
*/
some text
/*
variable1: value
variable2: value
*/
A;
preg_match("/\/\*(.*?)\*\//sm",$str,$matches);
foreach($matches as $k=>$v){
$v = preg_replace("/\/|\*/sm","",$v);
$v = array_filter(explode("\n",$v));
print_r($v);
}
输出
$ php test.php
Array
(
[1] => variable1: value
[2] => variable2: value
[3] =>
)
Array
(
[1] => variable1: value
[2] => variable2: value
)
现在你可以使用explode等来分隔这些变量。