我必须创建一个脚本来解析路径并用现有的数组属性替换变量。我有一个如下所示的多维数组:
$param = array(
'titles'=>array(
'[group1]'=>array(
array('name'=>'picture','title'=>'personel_image','target_folder'=>'tmp/contacts/{name=picture}[value]'),
array('name'=>'full_name','title'=>'Full Name'),
array('name'=>'melli_code','title'=>'id code','format'=>'number'),
)
)
)
正如您所看到的,有一个属性调用target_folder,用户可以按以下格式编写,' tmp / contacts / {format = number} [title] / {name = picture} [title] '
我需要一个解决方案来解析上面路径的粗体部分,如下面的数组。
$search_for = array(
'0'=>array(
'[array_column]'=>'format',
'[array_column_keyword']=>'number',
'[array_column_value']=>'title',
),
'1'=>array(
'[array_column]'=>'name',
'[array_column_keyword']=>'picture',
'[array_column_value']=>'title',
)
)
解决上述问题的最佳方法是什么?
答案 0 :(得分:0)
由于格式是固定的,格式中只允许[A-Za-z0-9_]
,因此您可以将正则表达式编写为:
preg_match('~\{[A-Za-z0-9_]+=[A-Za-z0-9_]+\}\[[A-Za-z0-9_]+\]~', $str, $matches);
在非UTF模式下(没有u
标记),您可以安全地将[A-Za-z0-9_]
替换为\w
:
preg_match('~\{\w+=\w+\}\[\w+\]~', $str, $matches);