【发布时间】:2011-12-14 02:44:54
【问题描述】:
我需要聚合一个对象数组。我假设使用 RegEx 收集所有被方括号括起来的文本实例是理想的方法。 (见下面的例子)。
有人可以解释一下我将如何阅读文本来执行上述操作吗?
$links = some [[text]] here and another [[link]] here
所以$links[0] 应该等于[[text]]
【问题讨论】:
我需要聚合一个对象数组。我假设使用 RegEx 收集所有被方括号括起来的文本实例是理想的方法。 (见下面的例子)。
有人可以解释一下我将如何阅读文本来执行上述操作吗?
$links = some [[text]] here and another [[link]] here
所以$links[0] 应该等于[[text]]
【问题讨论】:
此模式将使您将双括号内的文本作为内部分组,并将外部括号包括在内,作为完整的模式匹配:
$matches = array();
$links = "some [[text]] here and another [[link]] here";
preg_match_all("/\[\[([^\]]+)\]\]/", $links, $matches);
//---------------^^^^ Opening brackets [[ escaped
//-------------------^^^^^^^^ One or more characters excluding ] grouped in ()
//---------------------------^^^^ Closing brackets ]] escaped
var_dump($matches);
array(2) {
[0]=>
array(2) {
[0]=>
string(8) "[[text]]"
[1]=>
string(8) "[[link]]"
}
[1]=>
array(2) {
[0]=>
string(4) "text"
[1]=>
string(4) "link"
}
}
所以你可以使用任何你需要的。
echo $matches[0][1];
// [[link]]
echo $matches[1][1];
// link
【讨论】: