|||为分割符,explode — 使用一个字符串分割另一个字符串说明array explode ( string $separator , string $string [, int $limit ] )此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。如果设置了 limit 参数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。用这个得到个函数在循环函数 在循环体里面 用split(search,$str[,int]):把$str按search字符进行分割返回数组int是分割几或者strtok(原字符,分割符):每次分割一小块,它根据分割符的每个字符来分割;分割每个数组元素 得到一个新的数组 在定义一个数组,把的到的新的数组的2个元素分别赋给定义数组的键值,和值$a=explode("1@A|||5@B|||6@C|||4@D|||2@E|||3@F|||7@G|||8@H|||","|||");foreach($a as $value){$b=explode($value,"@");$c[$b[0]]=$b[1];}行了 我可能写的不对 ,但是思路是这样的,你自己想想
<?php$str = '1@A|||5@B|||6@C|||4@D|||2@E|||3@F|||7@G|||8@H|||';##---------正则表达式方法//这是你要的结果数组$result = array();preg_match_all('/(\d+)@(\w+)/', $str, $matchs);#print_r($matchs);//你能明白$matchs是什么东西foreach ($matchs[0] as $i=>$tmp){ //$matchs[1][$i] 就是1 $matchs[2][$i] 就是A $result[$matchs[1][$i]] = $matchs[2][$i];}print_r($result);unset($result);#--------字符串方法#以|||分割成1@A$ps = split("\|\|\|", $str);#var_dump($matchs);foreach ($ps as $s){ //以@分割1@A=> 1, A if(!$s){ continue; } list($num, $word) = split("@", $s); $result[$num] = $word;}print_r($result);