Есть строка: reputations=title:Angels city,dsc:Рыцарь первого круга,img:misc/zn2_1.gif| и есть код который разбирает эту строку: PHP: <? if(strpos($fcontents, "reputations")!==false) { $fcontents = strtr($fcontents, "|", " "); $arr = explode("=", $fcontents, 2); $arr1 = split(",", $arr[1]); $data[$arr[0]] = array(); for($i=0; $i<count($arr1); $i++) { $arr2 = split(":", $arr1[$i]); $data[$arr[0]][$arr2[0]] = $arr2[1]; } } ?> на: echo $data['reputations']['img']; выводит misc/zn2_1.gif echo $data['reputations']['dsc']; выводит Рыцарь первого круга echo $data['reputations']['title']; выводит Angels city а как разобрать более сложную строчку ввида: reputations=title:Angels city,dsc:Рыцарь первого круга,img:misc/zn2_1.gif|title:Capital city,dsc:Рыцарь первого круга,img:misc/zn1_1.gif|titleemons city,dsc:Рыцарь первого круга,img:misc/zn3_1.gif|title:Emeralds city,dsc:Рыцарь первого круга,img:misc/zn6_1.gif|title:Sandcity,dsc:Рыцарь первого круга,img:misc/zn7_1.gif|title:Алтарь Крови,dsc:Посвященный первого круга,img:misc/znbl_1.gif|title:Храм Знаний,dsc:Посвященный второго круга,img:misc/znrune_2.gif| у меня не получается... код который написан выше выводит: echo $data['reputations']['img']; выводит znrune_2.gif echo $data['reputations']['dsc']; выводит Рыцарь первого круга echo $data['reputations']['title']; выводит Angels city т.е. title и dsc из начала строки, а img из конца..., а всё остальное просто исчезает!!!
PHP: $fcontents = "reputations=title:Angels city,dsc:Рыцарь первого круга,img:misc/zn2_1.gif|title:Capital city,dsc:Рыцарь первого круга,img:misc/zn1_1.gif|title:Demons city,dsc:Рыцарь первого круга,img:misc/zn3_1.gif|title:Emeralds city,dsc:Рыцарь первого круга,img:misc/zn6_1.gif|title:Sandcity,dsc:Рыцарь первого круга,img:misc/zn7_1.gif|title:Алтарь Крови,dsc:Посвященный первого круга,img:misc/znbl_1.gif|title:Храм Знаний,dsc:Посвященный второго круга,img:misc/znrune_2.gif| "; $contents = explode ("=", $fcontents); $new_array = array(); $new_key = '0'; $new_array[$contents[0]]=array(); if (!empty($contents[1])) { $elements = explode ("|", $contents[1]); if (!empty($elements)) { foreach ($elements as $key=>$element) if (!empty($element)) { $fields = explode (",", $element); $new_array[$contents[0]][$key]=array(); foreach ($fields as $field) { if (!empty($field)) { $value = explode (":", $field); $new_array[$contents[0]][$key][$value[0]] = $value[1]; } } } } } и в массиве $new_array имеем Код (Text): 0,112565994263 Array ( [reputations] => Array ( [0] => Array ( [title] => Angels city [dsc] => Рыцарь первого круга [img] => misc/zn2_1.gif ) [1] => Array ( [title] => Capital city [dsc] => Рыцарь первого круга [img] => misc/zn1_1.gif ) [2] => Array ( [title] => Demons city [dsc] => Рыцарь первого круга [img] => misc/zn3_1.gif ) [3] => Array ( [title] => Emeralds city [dsc] => Рыцарь первого круга [img] => misc/zn6_1.gif ) [4] => Array ( [title] => Sandcity [dsc] => Рыцарь первого круга [img] => misc/zn7_1.gif ) [5] => Array ( [title] => Алтарь Крови [dsc] => Посвященный первого круга [img] => misc/znbl_1.gif ) [6] => Array ( [title] => Храм Знаний [dsc] => Посвященный второго круга [img] => misc/znrune_2.gif ) [7] => Array ( [ ] => ) ) )
Fduch Большое спсб!!! Ещё вопросик, а как сделать чтоб key имел неопределённое значение, т.е. не выводить информацию вида echo $new_array['reputations']['0']['title'];, и постоянно прописывать ['0'] ['1'] ['2'] и т.д., а чтоб просто прописать ['знак безконечности'] и оно само выводило если одно значение то одно, два значит два и т.д....???
очень просто PHP: <? for ($i=0, $c = count($new_array['reputations']); $i<$c; $i++) { echo $new_array['reputations'][$i]['title']; } // или foreach ($new_array['reputations'] as $elem) { echo $elem['title']; }