php解析xml数据

1.把xml解析成数组
private function xml_to_array($xml) {
		$reg = "/<(\\w+)[^>]*?>([\\x00-\\xFF]*?)<\\/\\1>/";
		if (preg_match_all($reg, $xml, $matches)) {
			$count = count($matches[0]);
			$arr = array();
			for ($i = 0; $i < $count; $i++) {
				$key = $matches[1][$i];
				$val = $this->xml_to_array($matches[2][$i]);  // 递归
				if (array_key_exists($key, $arr)) {
					if (is_array($arr[$key])) {
						if (!array_key_exists(0, $arr[$key])) {
							$arr[$key] = array($arr[$key]);
						}
					} else {
						$arr[$key] = array($arr[$key]);
					}
					$arr[$key][] = $val;
				} else {
					$arr[$key] = $val;
				}
			}
			return $arr;
		} else {
			return $xml;
		}
	}

猜你喜欢

转载自zyn-zyn.iteye.com/blog/2230569