$xml = file_get_contents("xxx.xml");$pa = "/<loc\s+id=\"([\w\d]+)\" type=\"1\">\s*([\w]+)\s*<\/loc>/is";
preg_match_all($pa, $xml, $matches);foreach($matches[1] as $key=>$value)
{
$city = $matches[2][$key];
$arrCity[$value] = $city;
}
var_dump($arrCity);

解决方案 »

  1.   

    可能你的xml的格式与你帖出来的有点区别,我哪个正则写得不是特别的精确.
    其实你也可以用php的xml函数来解析.这样可能好写.$doc = new DOMDocument; 
    $doc->load('test.xml'); 
    $locs = $doc->documentElement->getElementsByTagName('loc');
    foreach($locs as $key=>$value)
    {
    $code =  $value->getAttribute('id');
    $arrCity[$code] = $value->nodeValue;
    }
    print_r($arrCity);
      

  2.   

    <?xml version="1.0" encoding="ISO-8859-1" ?> 
      <search ver="2.0">
      <loc id="CHABC001" type="1">Beijing </loc>
      <loc id="CHABC002" type="1">Shanghai </loc>
      <loc id="CHABC003" type="1">Guangzhou </loc>
      <loc id="CHABC004" type="1">Hongkong </loc> 
      </search>
    完整的是这样的,id是固定的8位的字符串。