PHP预匹配函数变量提取

PHP预匹配函数变量提取,php,regex,tags,pattern-matching,preg-match,Php,Regex,Tags,Pattern Matching,Preg Match,假设我有这样一个字符串: [$IMAGE[file_name|width|height]] 如何匹配并获取2个变量 $tag = "IMAGE" $param = "file_name|width|height" 使用php预匹配函数? <?php $string = '[$IMAGE[file_name|width|height]]'; preg_match("/\[\\$(.*)\[(.*)\]\]/",$string,$matches); $tag = $matches[1];

假设我有这样一个字符串:

[$IMAGE[file_name|width|height]]
如何匹配并获取2个变量

$tag = "IMAGE"
$param = "file_name|width|height"
使用php预匹配函数?


<?php
$string = '[$IMAGE[file_name|width|height]]';
preg_match("/\[\\$(.*)\[(.*)\]\]/",$string,$matches);

$tag = $matches[1];  
$param = $matches[2];

echo "TAG: " . $tag;
echo "<br />";
echo "PARAM: " . $param;
?>

不使用
preg\u match
,但同样有效

$var = '[$IMAGE[file_name|width|height]]';
$p1 = explode('[',$var);
$tag = str_replace('$','',$p1[1]);
$param = str_replace(']','',$p1[2]);

echo $tag.'<br />';
echo $param;
$var='[$IMAGE[文件名|宽度|高度]];
$p1=分解(“[”,$var);
$tag=str_replace(“$”,“$p1[1]);
$param=str_replace(']','$p1[2]);
echo$tag.“
”; echo$param;
不使用
preg\u match
,但同样有效

$var = '[$IMAGE[file_name|width|height]]';
$p1 = explode('[',$var);
$tag = str_replace('$','',$p1[1]);
$param = str_replace(']','',$p1[2]);

echo $tag.'<br />';
echo $param;
$var='[$IMAGE[文件名|宽度|高度]];
$p1=分解(“[”,$var);
$tag=str_replace(“$”,“$p1[1]);
$param=str_replace(']','$p1[2]);
echo$tag.“
”; echo$param;
我将使用
([^\]]*)
来避免贪婪的结果。我将使用
([^\]]*)
来避免贪婪的结果。+1,因为它将缩放同一字符串中的多个实例+1,因为它将缩放同一字符串中的多个实例+1,以实现可行的字符串操作。建议使用第三个参数来
explode()
限制为两个组件
$p1=explode('[',$var,2);
谢谢@Michael-我尝试添加第三个参数,var_转储给了我一个字符串[0]和字符串[1]完整字符串的属性?@Michael ah-知道了,需要是3而不是2,因为数组中的第一项是空字符串+1,用于可操作的字符串操作。建议使用第三个参数来
explode()
限制为2个组件
$p1=explode(“[”,$var,2)
谢谢@Michael-我尝试添加第三个参数,var_dump给了我一个字符串[0]的“”,以及完整字符串的字符串[1]。@Michael啊-明白了,需要是3而不是2,因为数组中的第一项是空字符串