$str = "-首页/-医院动态/yydt-特色疗法/tslf-专家团队/zjtd-治疗设备/zlsb-胃部疾病/wbjb--胃溃疡/wky---常识/cs---症状/zz---治疗/zl---饮食/ys--反流性胃炎/flxwy---常识/cs---症状/zz---治疗/zl---饮食/ys--糜烂性胃炎/mlxwy---常识/cs---症状/zz---治疗/zl---饮食/ys--浅表性胃炎/qbxwy--萎缩性胃炎/wsxwy--急性胃炎/jxwy-肠部疾病/cbjb--结肠炎/jcy---常识/cs---症状/zz---治疗/zl---饮食/ys--直肠炎/zcy---常识/cs---症状/zz---治疗/zl---饮食/ys--十二指肠溃疡/sezcky---常识/cs---症状/zz---治疗/zl---饮食/ys--急性肠炎/jxcy-胃肠症状/wczz--口臭/kc---常识/cs---症状/zz---治疗/zl---饮食/ys--幽门螺旋杆菌/ymlxgj--胃痛胃胀/wtwz--便秘/bm--胃出血/wcx-hp检查/hp-康复案例/kfal-在线咨询/swt-来院路线/lylx";
preg_match_all("/(-{1,3}[^-]+)/", $str, $matches);
$out = array();
foreach ($matches[1] as $key => $value) {
$cout = substr_count($value,"-");
$out[$cout][] = $value;
}
var_dump($out);
preg_match_all("/(-{1,3}[^-]+)/", $str, $matches);
$out = array();
foreach ($matches[1] as $key => $value) {
$cout = substr_count($value,"-");
$out[$cout][] = $value;
}
var_dump($out);
$str = "-首页/-医院动态/yydt-特色疗法/tslf-专家团队/zjtd-治疗设备/zlsb-胃部疾病/wbjb--胃溃疡/wky---常识/cs---症状/zz---治疗/zl---饮食/ys--反流性胃炎/flxwy---常识/cs---症状/zz---治疗/zl---饮食/ys--糜烂性胃炎/mlxwy---常识/cs---症状/zz---治疗/zl---饮食/ys--浅表性胃炎/qbxwy--萎缩性胃炎/wsxwy--急性胃炎/jxwy-肠部疾病/cbjb--结肠炎/jcy---常识/cs---症状/zz---治疗/zl---饮食/ys--直肠炎/zcy---常识/cs---症状/zz---治疗/zl---饮食/ys--十二指肠溃疡/sezcky---常识/cs---症状/zz---治疗/zl---饮食/ys--急性肠炎/jxcy-胃肠症状/wczz--口臭/kc---常识/cs---症状/zz---治疗/zl---饮食/ys--幽门螺旋杆菌/ymlxgj--胃痛胃胀/wtwz--便秘/bm--胃出血/wcx-hp检查/hp-康复案例/kfal-在线咨询/swt-来院路线/lylx";
preg_match_all("/(-{1,3}[^-]+)/", $str, $matches);$out = array();
$i = $j = $k = 0;
//var_dump($matches);exit;
foreach ($matches[1] as $key => $value) {
$cout = substr_count($value,"-");
if($cout == 1){
$i ++;
$j = $k = 0; $index = $i;
}
else if($cout == 2){
$j ++;
$k = 0;
$index = $i."-".$j;
} else{
$index = $i."-".$j."-".$k;
}
$out[$index] = $value;}
var_dump($out);
?>结果为:
array
1 => string '-首页/' (length=8)
2 => string '-医院动态/yydt' (length=18)
3 => string '-特色疗法/tslf' (length=18)
4 => string '-专家团队/zjtd' (length=18)
5 => string '-治疗设备/zlsb' (length=18)
6 => string '-胃部疾病/wbjb' (length=18)
'6-1' => string '--胃溃疡/wky' (length=15)
'6-1-0' => string '---饮食/ys' (length=12)
'6-2' => string '--反流性胃炎/flxwy' (length=23)
'6-2-0' => string '---饮食/ys' (length=12)
'6-3' => string '--糜烂性胃炎/mlxwy' (length=23)
'6-3-0' => string '---饮食/ys' (length=12)
'6-4' => string '--浅表性胃炎/qbxwy' (length=23)
'6-5' => string '--萎缩性胃炎/wsxwy' (length=23)
'6-6' => string '--急性胃炎/jxwy' (length=19)
7 => string '-肠部疾病/cbjb' (length=18)
'7-1' => string '--结肠炎/jcy' (length=15)
'7-1-0' => string '---饮食/ys' (length=12)
'7-2' => string '--直肠炎/zcy' (length=15)
'7-2-0' => string '---饮食/ys' (length=12)
'7-3' => string '--十二指肠溃疡/sezcky' (length=27)
'7-3-0' => string '---饮食/ys' (length=12)
'7-4' => string '--急性肠炎/jxcy' (length=19)
8 => string '-胃肠症状/wczz' (length=18)
'8-1' => string '--口臭/kc' (length=11)
'8-1-0' => string '---饮食/ys' (length=12)
'8-2' => string '--幽门螺旋杆菌/ymlxgj' (length=27)
'8-3' => string '--胃痛胃胀/wtwz' (length=19)
'8-4' => string '--便秘/bm' (length=11)
'8-5' => string '--胃出血/wcx' (length=15)
9 => string '-hp检查/hp' (length=12)
10 => string '-康复案例/kfal' (length=18)
11 => string '-在线咨询/swt' (length=17)
12 => string '-来院路线/lylx' (length=18)
<?php
$str = "-首页/-医院动态/yydt-特色疗法/tslf-专家团队/zjtd-治疗设备/zlsb-胃部疾病/wbjb--胃溃疡/wky---常识/cs---症状/zz---治疗/zl---饮食/ys--反流性胃炎/flxwy---常识/cs---症状/zz---治疗/zl---饮食/ys--糜烂性胃炎/mlxwy---常识/cs---症状/zz---治疗/zl---饮食/ys--浅表性胃炎/qbxwy--萎缩性胃炎/wsxwy--急性胃炎/jxwy-肠部疾病/cbjb--结肠炎/jcy---常识/cs---症状/zz---治疗/zl---饮食/ys--直肠炎/zcy---常识/cs---症状/zz---治疗/zl---饮食/ys--十二指肠溃疡/sezcky---常识/cs---症状/zz---治疗/zl---饮食/ys--急性肠炎/jxcy-胃肠症状/wczz--口臭/kc---常识/cs---症状/zz---治疗/zl---饮食/ys--幽门螺旋杆菌/ymlxgj--胃痛胃胀/wtwz--便秘/bm--胃出血/wcx-hp检查/hp-康复案例/kfal-在线咨询/swt-来院路线/lylx";
preg_match_all("/(-{1,3}[^-]+)/", $str, $matches);$out = array();
$i = $j = $k = 0;
//var_dump($matches[1] );exit;
foreach ($matches[1] as $key => $value) {
$cout = substr_count($value,"-");
if($cout == 1){
$i ++;
$j = $k = 0;
$value=str_replace("-","",$value);
$index = (0)."-".(0)."-".($key+1);
}
else if($cout == 2){
$j ++;
$s=$key+1;
$k = 0;
$value=str_replace("--","",$value);
$index = $i."-".($i)."-".($s);
} else if($cout == 3){
$k++;
$value=str_replace("---","",$value);
$index = $i."-".($s)."-".($key+1);
}
$out[$index] = $value;}
var_dump($out);
?>输出为:
array (size=56)
'0-0-1' => string '首页/' (length=7)
'0-0-2' => string '医院动态/yydt' (length=17)
'0-0-3' => string '医院动态/yydt' (length=17)
'0-0-4' => string '特色疗法/tslf' (length=17)
'0-0-5' => string '专家团队/zjtd' (length=17)
'0-0-6' => string '治疗设备/zlsb' (length=17)
'0-0-7' => string '胃部疾病/wbjb' (length=17)
'7-7-8' => string '胃溃疡/wky' (length=13)
'7-8-9' => string '常识/cs' (length=9)
'7-8-10' => string '症状/zz' (length=9)
'7-8-11' => string '治疗/zl' (length=9)
'7-8-12' => string '饮食/ys' (length=9)
'7-7-13' => string '反流性胃炎/flxwy' (length=21)
'7-13-14' => string '常识/cs' (length=9)
'7-13-15' => string '症状/zz' (length=9)
'7-13-16' => string '治疗/zl' (length=9)
'7-13-17' => string '饮食/ys' (length=9)
'7-7-18' => string '糜烂性胃炎/mlxwy' (length=21)
'7-18-19' => string '常识/cs' (length=9)
'7-18-20' => string '症状/zz' (length=9)
'7-18-21' => string '治疗/zl' (length=9)
'7-18-22' => string '饮食/ys' (length=9)
'7-7-23' => string '浅表性胃炎/qbxwy' (length=21)
'7-7-24' => string '萎缩性胃炎/wsxwy' (length=21)
'7-7-25' => string '急性胃炎/jxwy' (length=17)
'0-0-26' => string '肠部疾病/cbjb' (length=17)
'8-8-27' => string '结肠炎/jcy' (length=13)
'8-27-28' => string '常识/cs' (length=9)
'8-27-29' => string '症状/zz' (length=9)
'8-27-30' => string '治疗/zl' (length=9)
'8-27-31' => string '饮食/ys' (length=9)
'8-8-32' => string '直肠炎/zcy' (length=13)
'8-32-33' => string '常识/cs' (length=9)
'8-32-34' => string '症状/zz' (length=9)
'8-32-35' => string '治疗/zl' (length=9)
'8-32-36' => string '饮食/ys' (length=9)
'8-8-37' => string '十二指肠溃疡/sezcky' (length=25)
'8-37-38' => string '常识/cs' (length=9)
'8-37-39' => string '症状/zz' (length=9)
'8-37-40' => string '治疗/zl' (length=9)
'8-37-41' => string '饮食/ys' (length=9)
'8-8-42' => string '急性肠炎/jxcy' (length=17)
'0-0-43' => string '胃肠症状/wczz' (length=17)
'9-9-44' => string '口臭/kc' (length=9)
'9-44-45' => string '常识/cs' (length=9)
'9-44-46' => string '症状/zz' (length=9)
'9-44-47' => string '治疗/zl' (length=9)
'9-44-48' => string '饮食/ys' (length=9)
'9-9-49' => string '幽门螺旋杆菌/ymlxgj' (length=25)
'9-9-50' => string '胃痛胃胀/wtwz' (length=17)
'9-9-51' => string '便秘/bm' (length=9)
'9-9-52' => string '胃出血/wcx' (length=13)
'0-0-53' => string 'hp检查/hp' (length=11)
'0-0-54' => string '康复案例/kfal' (length=17)
'0-0-55' => string '在线咨询/swt' (length=16)
'0-0-56' => string '来院路线/lylx' (length=17)
或者说,能方便的还原成原始串吗?从算法实现上看,无论是正则规则 /(-{1,3}[^-]+)/ 还是条件判断 if($cout == 3){
都限定了分类层次不能大于 3,怎么能说是”实现了无限极分类“呢?