怎样根据$hello数据将$str层层展开?<?php $my_arr=array(); $str="DIR_FS_AAA . DIR_WS_CLASSES";
$hello=array(
"DIR_FS_AAA" =>"DIR_WS_TEMPLATE.'includes/'",
"DIR_WS_CLASSES" =>"DIR_WS_ADMIN.'helloworld'",
"DIR_WS_TEMPLATE" =>"template/",
"DIR_WS_ADMIN" =>"admin/"
);//怎样得到这样的结果数组: $my_arr=array(
"DIR_FS_AAA . DIR_WS_CLASSES",
"DIR_WS_TEMPLATE.'includes/'.DIR_WS_TEMPLATE.'includes/'",
"template/includes/admin/includes/"
);?>
$hello=array(
"DIR_FS_AAA" =>"DIR_WS_TEMPLATE.'includes/'",
"DIR_WS_CLASSES" =>"DIR_WS_ADMIN.'helloworld'",
"DIR_WS_TEMPLATE" =>"template/",
"DIR_WS_ADMIN" =>"admin/"
);//怎样得到这样的结果数组: $my_arr=array(
"DIR_FS_AAA . DIR_WS_CLASSES",
"DIR_WS_TEMPLATE.'includes/'.DIR_WS_TEMPLATE.'includes/'",
"template/includes/admin/includes/"
);?>
$my_arr[] = $str;
$tmp = preg_replace("/[A-Z_]+/e", "\$hello['\\0']", $str);
$my_arr[] = $tmp;
$tmp = preg_replace("/[\"']?\s*\.?\s*([A-Z_]+)\s*\.?\s*[\"']/e", "\$hello['\\1']", $tmp);
$my_arr[] = $tmp;//test
print_r($my_arr);
/**Array
(
[0] => DIR_FS_AAA . DIR_WS_CLASSES
[1] => DIR_WS_TEMPLATE.'includes/' . DIR_WS_ADMIN.'helloworld'
[2] => template/includes/admin/helloworld'
)/**/
第二步 为什么是 "DIR_WS_TEMPLATE.'includes/'.DIR_WS_TEMPLATE.'includes/'"
DIR_WS_CLASSES 对应的是 DIR_WS_ADMIN.'helloworld'
看不懂
$hello = array(
"DIR_FS_AAA" =>"DIR_WS_TEMPLATE.'includes/'",
"DIR_WS_CLASSES" =>"DIR_WS_ADMIN.'helloworld'",
"DIR_WS_TEMPLATE" =>"template/",
"DIR_WS_ADMIN" =>"admin/"
);do {
$my_arr[] = $old = $str;
$str = strtr($str, $hello);
}while($old != $str);print_r($my_arr);Array
(
[0] => DIR_FS_AAA . DIR_WS_CLASSES
[1] => DIR_WS_TEMPLATE.'includes/' . DIR_WS_ADMIN.'helloworld'
[2] => template/.'includes/' . admin/.'helloworld'
)